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

來源:互聯網
上載者:User

標籤:

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

1,Application

application(應用)其實就是用spark-submit提交到spark的程式。比方說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這幾個術語的瞭解暫時就這麼多,可能不是很到位,不過暫且就這麼多了。

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.