Spark學習筆記1:Application,Driver,Job,Task,Stage理解


看了spark的原始論文和相關資料,對spark中的一些經常用到的術語做了一些梳理,記錄下。

1,Application

application(應用)其實就是用spark-submit提交的程序。比方說spark examples中的計算pi的SparkPi。一個application通常包含三部分:從數據源(比方說HDFS)取數據形成RDD,通過RDD的transformation和action進行計算,將結果輸出到console或者外部存儲(比方說collect收集輸出到console)。

2,Driver

 Spark中的driver感覺其實和yarn中Application Master的功能相類似。主要完成任務的調度以及和executor和cluster manager進行協調。有client和cluster聯眾模式。client模式driver在任務提交的機器上運行,而cluster模式會隨機選擇機器中的一台機器啟動driver。從spark官網截圖的一張圖可以大致了解driver的功能。

 

3,Job

 Spark中的Job和MR中Job不一樣不一樣。MR中Job主要是Map或者Reduce Job。而Spark的Job其實很好區別,一個action算子就算一個Job,比方說count,first等。

4, Task

Task是Spark中最新的執行單元。RDD一般是帶有partitions的,每個partition的在一個executor上的執行可以任務是一個Task。 

5, Stage

 Stage概念是spark中獨有的。一般而言一個Job會切換成一定數量的stage。各個stage之間按照順序執行。至於stage是怎么切分的,首選得知道spark論文中提到的narrow dependency(窄依賴)和wide dependency( 寬依賴)的概念。其實很好區分,看一下父RDD中的數據是否進入不同的子RDD,如果只進入到一個子RDD則是窄依賴,否則就是寬依賴。寬依賴和窄依賴的邊界就是stage的划分點。從spark的論文中的兩張截圖,可以清楚的理解寬窄依賴以及stage的划分。

 

至於為什么這么划分,主要是寬窄依賴在容錯恢復以及處理性能上的差異(寬依賴需要進行shuffer)導致的。

 

 關於spark這幾個術語的了解暫時就這么多,可能不是很到位,不過暫且就這么多了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM