作者:十一喵先森
鏈接:https://juejin.im/post/5e1c414fe51d451cad4111d1
來源:掘金
著作權歸作者所有,商業轉載請聯系作者獲得授權,非商業轉載請注明出處,
對上文的總結
Spark 任務調度概述
一個Spark應用程式包括Job、Stage以及Task三個概念:
? Job是以Action方法為界,遇到一個Action方法則觸發一個Job;
? Stage是Job的子集,以RDD寬依賴(即Shuffle)為界,遇到Shuffle做一次劃分;
? Task是Stage的子集,以并行度(磁區數)來衡量,磁區數是多少,則有多少個task,
Spark的任務調度總體來說分兩路進行,一路是Stage級的調度,一路是Task級的調度,
Spark Stage級調度

Job由saveAsTextFile觸發,該Job由RDD-3和saveAsTextFile方法組成,根據RDD之間的依賴關系從RDD-3開始回溯搜索,直到沒有依賴的RDD-0,在回溯搜索程序中,RDD-3依賴RDD-2,并且是寬依賴,所以在RDD-2和RDD-3之間劃分Stage,RDD-3被劃到最后一個Stage,即ResultStage中,RDD-2依賴RDD-1,RDD-1依賴RDD-0,這些依賴都是窄依賴,所以將RDD-0、RDD-1和RDD-2劃分到同一個Stage,即ShuffleMapStage中,實際執行的時候,資料記錄會一氣呵成地執行RDD-0到RDD-2的轉化,不難看出,其本質上是一個深度優先搜索演算法,
一個Stage是否被提交,需要判斷它的父Stage是否執行,只有在父Stage執行完畢才能提交當前Stage,如果一個Stage沒有父Stage,那么從該Stage開始提交,
總結:
stage調度演算法:從前往后.
Spark Task 級調度
TaskScheduler支持兩種調度策略,一種是FIFO,也是默認的調度策略,另一種是FAIR
FIFO: 先來先到;
FAIR: 根據優先級來調度.
失敗重試與黑名單機制
對于失敗的Task,會記錄它失敗的次數,如果失敗次數還沒有超過最大重試次數,那么就把它放回待調度的Task池子中,否則整個Application失敗,
黑名單記錄Task上一次失敗所在的Executor Id和Host,以及其對應的“拉黑”時間,“拉黑”時間是指這段時間內不要再往這個節點上調度這個Task了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/228940.html
標籤:大數據
