spark學習筆記2 spark應用執行機制

spark的主要模塊:調度與任務分配  i/o模塊 通信控制模塊 容錯模塊  shuffle模塊

1、應用轉換流程

action算子觸發job提交,提交到spark的job生成RDD DAG,經過DAGScheduler轉化爲stage DAG,每個stage中產生相應的task集合,taskscheduler講任務分發到executor執行。每個任務對應相應的一個數據塊,使用用戶定義的函數處理數據。

更詳細的說,spark應用程序進行各種transformation的計算,最後通過action觸發job。提交之後首先通過sparkContext根據RDD的依賴關係構建DAG圖,DAG圖提交給DAGScheduler進行解析,解析時是以shuffle爲邊界,反向解析,構建stage,stage之間也有依賴關係。這個過程就是對DAG圖進行解析劃分stage,並且計算出各個stage之間的依賴關係。然後將一個個TaskSet提交給底層調度器,在spark中是提交給taskScheduler處理,生成TaskSet manager,最後提交給executor進行計算,executor多線程計算,計算完反饋給TaskSetmanager,再反饋給taskScheduler,然後再反饋回DAGScheduler。全部運行完之後寫入數據。

spark爲了系統的內存不會快速用完,使用延遲執行,只有操作累積到action,算子纔會觸發整個操作序列的執行,中間結果不會單獨

重新分配內存,而是在同一個數據塊上進行流水線操作。

2、spark應用的概念

spark應用的執行模式有local,standalone,yarn, mesos。根據程序的driver program是否在集羣中運行,spark應用的運行方式又可以分爲cluster和client

模式。

(1)job:一個rdd graph觸發的作業。包含多個task組成的並行計算,往往由action催生。

(2)stage:job的調度單位。每個job根據rdd的依賴關係被劃分爲很多的stage,每個stage包含一組相同的task,這一組task也叫taskset。

(3)task:被送到某個executor上的工作單元。

(4)taskSet:一組關聯的,相互之間沒有shuffle依賴關係的任務組成的任務集。

(5)Driver Program:運行程序的main函數並創建sparkcontext

一個應用程序由一個driver program和多個job構成。一個job由多個stage組成。一個stage由多個沒有shuffle關係的task組成。

3、應用提交與執行方式

(1)driver進程運行在客戶端,對應用進行管理監控

客戶端啓動後直接運行用戶程序,啓動Driver相關的工作:DAGScheduler和BlockManagerMaster等。客戶端的Driver向Master註冊。
Master還會讓Worker啓動Exeuctor。Worker創建一個ExecutorRunner線程,ExecutorRunner會啓動ExecutorBackend進程。
ExecutorBackend啓動後會向Driver的SchedulerBackend註冊,Driver就可以找到計算資源。Driver的DAGScheduler解析作業並生成相應的Stage,每個Stage包含的Task通過TaskScheduler分配給Executor執行。所有stage都完成後作業結束。

(2)Driver在worker運行

客戶端提交作業給Master,Master讓一個Worker啓動Driver,即SchedulerBackend。Worker創建一個DriverRunner線程,DriverRunner啓動SchedulerBackend進程。
另外Master還會讓其餘Worker啓動Exeuctor,即ExecutorBackend。Worker創建一個ExecutorRunner線程,ExecutorRunner會啓動ExecutorBackend進程。
ExecutorBackend啓動後會向Driver的SchedulerBackend註冊。SchedulerBackend進程中包含DAGScheduler,它會根據用戶程序,生成執行計劃,並調度執行。對於每個stage的task,都會被存放到TaskScheduler中,ExecutorBackend向SchedulerBackend彙報的時候把TaskScheduler中的task調度到ExecutorBackend執行。
所有stage都完成後作業結束。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章