摘要:

  1. 基本概念

    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任務結果的獲取

內容總結:

  1. 基本概念

  首先,我們先列出任務調度涉及的相關概念:

  •   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.

   萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

  Spark的stages 是以shuffle為邊界切分RDD圖來創(chuàng)建的。具有窄依賴(例:map(),filter())的操作會在對應stage的一系列任務中管道式的運行,但是具有寬依賴的操作則需要多個stage.最后所有的stage之間將只有shuffle依賴關系。

  實際上這些操作發(fā)生在RDD.compute(),在各個RDD的實現(xiàn)上,比如MappedRDD,FilteredRDD等

   萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

  

  下面提到還一些概念: