摘要:
基本概念
1.1 Application
1.2 Job
1.3 Stage
1.4 TaskSet
1.5 Task
1.6 DAG
2.相關的類
2.1DAGScheduler
2.2ActiveJob
2.3Stage
2.4Task
3.運行方式
4.工作流程
4.1劃分Stage
4.2生成Job,提交Stage
4.3任務集的提交
4.4任務作業(yè)完成狀態(tài)的監(jiān)控
4.5任務結果的獲取
內容總結:
基本概念
首先,我們先列出任務調度涉及的相關概念:
Application:由多個作業(yè)組成的Spark應用程序
Job:由RDD Action產生的多個stage所組成的一次計算操作
Stage:任務集所對應的調度階段
TaskSet:這是一組彼此之間有關聯(lián),但是互相不存在shuffle依賴的任務所組成的任務集
Task:單個分區(qū)數(shù)據(jù)集上的處理流程單元
DAG:有向無環(huán)圖
2. 相關的類:
2.1作業(yè)調度(DAGScheduler)
DAGScheduler 是基于stage的高級調度(邏輯調度),這個調度會計算每個Job對應的stage的DAG。然后然后以TaskSet的形式提交stage到底層的TaskScheduler.
Spark的stages 是以shuffle為邊界切分RDD圖來創(chuàng)建的。具有窄依賴(例:map(),filter())的操作會在對應stage的一系列任務中管道式的運行,但是具有寬依賴的操作則需要多個stage.最后所有的stage之間將只有shuffle依賴關系。
實際上這些操作發(fā)生在RDD.compute(),在各個RDD的實現(xiàn)上,比如MappedRDD,FilteredRDD等
下面提到還一些概念: