Spark深入解讀(一) 基本概念

2021-10-03 03:26:45 字數 1423 閱讀 9881

使用sparksubmit提交的個計算應用

driver向executor提交的作業

觸發一次acition形成乙個完整的dag

乙個dag對應乙個job

乙個job中有多個stage,乙個stage中有多個task

概念:有向無環圖

是對多個rdd轉換過程和依賴關係的描述

觸發action就會形成乙個完整的dag,乙個dag就是乙個job

概念:任務執行階段

stage執行是有先後順序的,先執行前的,在執行後面的

乙個stage對應乙個taskset

乙個taskset中的task的數量取決於stage中最後乙個rdd分割槽的數量

1. 概念:spark中任務最小的執行單元

2. task分類兩種

2-2) resulttask:

3. task其實就是類的例項

4. task的數量決定決定並行,同時也要考慮可用的cores

儲存同一種計算邏輯多個task的集合

乙個taskset中的task計算邏輯都一樣,計算的資料不一樣

1. 概念:分布式、彈性、可容錯的抽象資料集

2. 特點

2-1-2) 將driver端集合並行化成rdd

2-2) 乙個功能函式作用在分割槽上,函式決定計算邏輯

2-3) rdd和rdd存在依賴關係,可以根據依賴關係恢復失敗的任務和劃分stage

2-4) 如果要發生shuffle,要使用分割槽器,預設使用hashpartitioner,分割槽器決定資料到下游哪個分割槽

2-5) 最優位置,即將executor排程到資料所在的節點上,要求worker和datanode部署在同一節點或onyarn,通過訪問namenode獲取資料塊位置資訊

3. 到底什麼是rdd

概念:依賴關係,指的是父rdd和子rdd之間的依賴關係

窄依賴:沒有shfuffle產生,多個運算元會被合併到乙個task中,即在乙個pipeline中

寬依賴:有shuffle產生,是劃分stage的依據

概念:需要通過網路將資料傳輸到多台機器,資料被打散,但是有網路傳輸,不一定就有shuffle

上游rdd的乙個分割槽將資料給了下游rdd的多個分割槽,即是shuffle,需要注意的是,shuffle過程是下游的task到上游拉取資料,不是上游task傳送給下游的

shuffle的功能是將具相一定規律的資料按照指定的分割槽器的分割槽規則,通過網路,傳輸到指定地一台機器的乙個分割槽中即task中

Spark基本概念

下面是spark的乙個日誌計數示例,該程式演示了spark的計算模型 下面是spark執行時涉及的各元件的概況圖 從rdd轉換和儲存角度,使用者程式對rdd通過多個函式進行操作,將rdd進行轉換。block manager管理rdd的物理分割槽,每個block就是節點上對應的乙個資料塊,可以儲存在記...

Spark基本概念

a.driver programs通過sparkcontent物件訪問spark b.sparkcontent代表和乙個集群的鏈結 c.在shell中sparkcontent物件自動建立好了,就是sc 主要分為兩種 python shell和 scala shell 現在主要介紹scala shel...

Spark的基本概念

2018年年末,開始spark學習 block 輸入可能以多個檔案的形式儲存在hdfs上,每個file都包含了很多塊,稱為block。inuptsplit 當spark讀取這些檔案作為輸入時,會根據具體資料格式對應的inputformat進行解析,一般是將若干個block合併成乙個輸入分片,稱為in...