關於大數據中-----任務調度、資源調度


1、 任務調度

     a、RDD Objects---->轉換為DAG有向無環圖

     b、DAGScheduler---根據RDD之間的寬窄依賴切分Job,切分為Stage

     c、Stage本質上就是---TaskSet,Stage就會以TaskSet形式傳給TaskScheduler

     d、TaskScheduler遍歷TaskSet,分配給executor執行

        |如果說executor中task執行失敗,跟TaskScheduler申請重試3次,3次仍然失敗

DAGScheduler重試重新發送TaskSet,默認會重試4次。如果仍然失敗,宣告Stage執行失敗

,也就是包含Stage的job宣告執行失敗。

     e、推測執行---表示一個spark job中,可能會存在某一些task執行緩慢,推測會啟動

一個相同的task,選擇先執行完的作為結果

        |推測執行在spark中默認是關閉的

  1、可能出現數據重復寫入

  2、集群奔潰。數據傾斜--task本身計算量大,耗時較長

  2、spark的資源調度流程

    master:管理整個集群的資源

    Worker:每啟動一個Worker都注冊在Master上

  a、當提交spark的程序時,main會創建driver進程

          當執行到val sc=new SparkContext()---會默認創建兩個對象DAGScheduler、

   TaskScheduler對象。

  b、TaskScheduler向Master發送一個請求,申請程序運行需要資源

  c、maste根據TaskScheduler發送的請求,去每一個worker上查看其資源使用情況,

  給資源充足的worker上發送一條信息。讓其創建一個executor進程,是一個線程池

  用來執行每一個task

  d、所有的executor都向TaskScheduler反向注冊,TaskScheduler中一個executor列表

  e、任務調度---DAGScheduler切分job---分發TaskSet TaskScheduler

  f、TaskScheduler遍歷TaskSet,把每一個task分發最優的executor執行

     注意:如果task執行失敗,向TaskScheduler...(任務調度)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM