Spark-任務排程與資源排程的整合
阿新 • • 發佈:2018-12-22
目錄
排程流程
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掉,釋放資源。