1. 程式人生 > >spark筆記之Spark任務調度

spark筆記之Spark任務調度

fda 調度 water 周期 taskset 完成 構建 任務 shadow

9.1 任務調度流程圖
技術分享圖片
各個RDD之間存在著依賴關系,這些依賴關系就形成有向無環圖DAG,DAGScheduler對這些依賴關系形成的DAG進行Stage劃分,劃分的規則很簡單,從後往前回溯,遇到窄依賴加入本stage,遇見寬依賴進行Stage切分。完成了Stage的劃分。DAGScheduler基於每個Stage生成TaskSet,並將TaskSet提交給TaskScheduler。TaskScheduler 負責具體的task調度,最後在Worker節點上啟動task。
9.2 DAGScheduler
(1)DAGScheduler對DAG有向無環圖進行Stage劃分。
(2)記錄哪個RDD或者 Stage 輸出被物化(緩存),通常在一個復雜的shuffle之後,通常物化一下(cache、persist),方便之後的計算。
(3)重新提交shuffle輸出丟失的stage(stage內部計算出錯)給TaskScheduler
(4)將 Taskset 傳給底層調度器
a)– spark-cluster TaskScheduler
b)– yarn-cluster YarnClusterScheduler
c)– yarn-client YarnClientClusterScheduler
9.3 TaskScheduler
(1)為每一個TaskSet構建一個TaskSetManager 實例管理這個TaskSet 的生命周期
(2)數據本地性決定每個Task最佳位置
(3)提交 taskset( 一組task) 到集群運行並監控
(4)推測執行,碰到計算緩慢任務需要放到別的節點上重試
(5)重新提交Shuffle輸出丟失的Stage給DAGScheduler

spark筆記之Spark任務調度