Spark名詞解釋及關係

物理 養生道 2017-04-14

隨著對spark的業務更深入,對spark的瞭解也越多,然而目前還處於知道的越多,不知道的更多階段,當然這也是成長最快的階段。這篇文章用作總結最近收集及理解的spark相關概念及其關係。

名詞

driver

driver物理層面是指輸入提交spark命令的啟動程序,邏輯層面是負責調度spark運行流程包括向master申請資源,拆解任務,代碼層面就是sparkcontext。

worker

worker指可以運行的物理節點。

executor

executor指執行spark任務的處理程序,對java而言就是擁有一個jvm的進程。一個worker節點可以運行多個executor,只要有足夠的資源。

job

job是指一次action,rdd(rdd在這裡就不解釋了)操作分成兩大類型,一類是transform,一類是action,當涉及到action的時候,spark就會把上次action之後到本次action的所有rdd操作用一個job完成。

stage

stage是指一次shuffle,rdd在操作的時候分為寬依賴(shuffle dependency)和窄依賴(narraw dependency),如下圖所示。而寬依賴就是指shuffle。

應某人要求再解釋一下什麼是窄依賴,就是父rdd的每個分區都只作用在一個子rdd的分區中,原話是這麼說的each partition of the parent RDD is used by at most one partition of the child RDD

Spark名詞解釋及關係

task

task是spark的最小執行單位,一般而言執行一個partition的操作就是一個task,關於partition的概念,這裡稍微解釋一下。

spark的默認分區數是2,並且最小分區也是2,改變分區數的方式有很多,大概有三個階段

1.啟動階段,通過 spark.default.parallelism 來初始化默認分區數

2.生成rdd階段,可通過參數配置

3.rdd操作階段,默認繼承父rdd的partition數,最終結果受shuffle操作和非shuffle操作的影響,不同操作的結果partition數不同

名詞關係

物理關係

官網給出的spark運行架構圖

Spark名詞解釋及關係

邏輯關係

下圖是總結的邏輯關係圖,如果有不對之處,還望提醒

Spark名詞解釋及關係

參考資料

//spark apche的官網提供的參數配置清單

//spark apche的官網提供的spark運行總覽

//stackoverflow對於dataframe partition的解釋

//關於spark最小分區數的解釋

相關推薦

推薦中...