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