spark排程管理
一、排程相關基本概念
Task(任務):單個分割槽資料集上的最小處理流程單元。
TaskSet(任務集):由一組關聯的,但互相之間沒有Shuffle依賴關係的任務所組成的任務集。
Stage(排程階段):一個任務集對應的排程階段。
Job(作業):由一個RDD Action生成的一個或多個排程階段所組成的一次計算作業。
Application(應用程式):Spark應用程式,由一個或多個作業組成。
二、排程流程圖
三、DAGScheduler
1、構建Stage
當一個RDD操作觸發計算,向DAGScheduler提交作業時,DAGScheduler需要從RDD依賴鏈的末端的RDD出發,遍歷整個RDD鏈,劃分排程階段,排程階段是以ShuffleDependency為依據的
2、記錄哪個RDD或者Stage輸出被物化
通常在一個複雜的shuffle之後,通常物化一下(cache、persist),方便之後的計算
3、重新提交shuffle輸出丟失的stage
4、將Taskset傳給底層排程器
-spark-cluster :TaskScheduler
-yarn-cluster: YarnClusterScheduler
四、TaskScheduler和TaskSetManager
1、為每一個TaskSet構建一個TaskSetManager例項來管理這個TaskSet的生命週期
2、TaskSetManager會根據(1)上一次任務成功提交的時間 (2)process-local(有快取cache的節點),node-local,rack-local,any來決定每個Task的最佳位置
3、推測執行,TaskScheduler發現某個Task一直未執行完,就可能啟動同樣的任務執行同一個Task,哪個任務先執行完就用哪個任務的結果
五、二種Task
shuffleMapTask和ResultTask,被執行的task多數是shuffleMapTask
1、ResultTask (FinalStage 所對應的任務)
返回給driver 的是運算結果本身
<1>
結果足夠 小 , 則直接 放在 DirectTaskResult 對 象 內
<2>
超過特定 尺寸 ( 預設約 10MB ) 則在 Executor 端會將DirectTaskResult 先 序 列 化, 再把 序
列 化的結果作為一個 資料塊 存放在 BlockManager 裡 , 而後將 BlockManager 返回的 BlockID
放在 IndirectTaskResult 物件中返回給 driver
2、shuffleMapTask
返回給DAGScheduler的是一個MapStatus物件,MapStatus物件管理了ShuffleMapTask的運算輸出結果在BlockManager裡面的相關儲存資訊,而非結果本身,這些儲存資訊將作為下一個Stage的任務的獲取輸入資料的依據
相關文章
- 【Spark篇】---Spark資源排程和任務排程Spark
- Spark中資源排程和任務排程Spark
- Spark - [03] 資源排程模式Spark模式
- Spark中shuffle的觸發和排程Spark
- spark on yarn 的資源排程器設定.SparkYarn
- 排程管理大總結
- spark streaming原始碼分析3 排程及執行Spark原始碼
- Flink排程之排程器、排程策略、排程模式模式
- 【Spark篇】---Spark中資源和任務排程原始碼分析與資源配置引數應用Spark原始碼
- Net作業排程(二) -CrystalQuartz遠端管理quartz
- Linux核心排程分析(程式排程)Linux
- 作業系統(5)處理器排程管理作業系統
- libgo原始碼分析之多執行緒協程管理和排程Go原始碼執行緒
- 開源專案推薦 - 巨鯨任務排程平臺(Spark、Flink)Spark
- Go語言排程器之主動排程(20)Go
- Go排程器系列(3)圖解排程原理Go圖解
- 告別手動排程,海豚排程器 3.1.x 叢集部署讓你輕鬆管理多機!
- 專案管理軟體排程的優勢有哪些?專案管理
- 排程器簡介,以及Linux的排程策略Linux
- Go排程器系列(2)巨集觀看排程器Go
- Go語言排程器之排程main goroutine(14)GoAI
- Pod的排程是由排程器(kube-scheduler)
- Go runtime 排程器精講(五):排程策略Go
- 任務排程
- 資料排程
- async-await:協作排程 vs 搶佔排程AI
- k8s排程器介紹(排程框架版本)K8S框架
- 2.2.5排程演算法:時間片輪轉、優先順序排程、多級反饋排程演算法
- [典藏版] Golang 排程器 GMP 原理與排程全分析Golang
- 程式排程演算法Linux程式排程演算法演算法Linux
- 實戰儲存過程排程過程儲存過程
- Go 排程模型 GPMGo模型
- Laravel 任務排程Laravel
- Laravel Scheme排程LaravelScheme
- 07 系統排程
- linux程式排程Linux
- goroutine 排程器(scheduler)Go
- Gevent 排程流程解析