1. 程式人生 > >Spark-任務排程與資源排程的整合

Spark-任務排程與資源排程的整合

目錄

排程流程

1.原始碼打成jar包,放到叢集上

2.提交Application,客戶端會生成一個Driver程序。

spark-submit --master --class jarPath

3.當TaskScheduler物件建立成功後,會向Master為Application申請資源

4.當Master中的waitingApps集合中的元素髮生改變會呼叫schedule()

5.當Executor啟動成功後,會向Task Scheduler反向註冊,此時的Task Scheduler就有一批Executor的列表資訊

6.Driver程序中的DAGScheduler會根據RDD的寬窄依賴,切割job,劃分stage,每一個stage都是由一組task組成的,每一個task是一個pipeline的計算模式。

7.Driver程序中的TaskScheduler會根據資料的位置(通過呼叫HDFS的API,拿到資料的block塊以及位置)來分發task

8.Driver程序中的TaskScheduler分發task並且監控task的執行情況

9.如果task失敗或者掙扎,Driver程序中的TaskScheduler會重試

10.如果task失敗次數達到規定次數後,Driver程序中的DAGScheduler會重試stage(只會重試失敗的task)

11.任務完成,Driver程序會告訴Master將叢集中的Executor kill掉,釋放資源。

在這裡插入圖片描述