Spark任務調度


 

  不多說,直接上干貨!

 

 

 

 

Spark任務調度

          

 

 

 

 

 

 

 

DAGScheduler

  構建Stage—碰到shuffle就split

  記錄哪個RDD 或者Stage 輸出被物化

  重新提交shuffle 輸出丟失的stage

  將Taskset 傳給底層調度器

  本地性策略--- preferredLocations(p)

1.spark-cluster TaskScheduler
2.yarn-cluster YarnClusterScheduler
3.yarn-client YarnClientClusterScheduler

 

 

 

 

 

 

 

TaskScheduler

  為每一個TaskSet 構建一個TaskSetManager 實例管理這個TaskSet 的生命周期

  數據本地性決定每個Task 最佳位置(process-local, node-local, rack-local and then and any

  提交taskset( 一組task) 到集群運行並監控

  推測執行,碰到straggle 任務放到別的節點上重試

  出現shuffle 輸出lost 要報告fetch failed 錯誤

 

 

 

 

 

 

 

ScheduleBacked

  實現與底層資源調度系統的交互(YARN,mesos等)

  配合TaskScheduler實現具體任務執行所需的資源分配(核心接口receiveOffers)

  詳細過程

 

 

 

 

 

 

實例分析

val lines = ssc.textFile(args(1)) // 輸入
val words = lines.flatMap(x =>x.split(" "))
words.cache() // 緩存
val wordCounts = words.map(x =>(x, 1) )
val red = wordCounts.reduceByKey( (a,b)=>{a + b} , 8)
red.saveAsTextFile(“/root/Desktop/out” , 8) // 行動

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM