摘要:

  1. 基本概念

    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é):

  1. 基本概念

  首先,我們先列出任務(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.

   萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  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等

   萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  

  下面提到還一些概念: