spark-stage任務劃分、sparkclient執行模式

孤獨的挑燈者發表於2020-10-22

sparkclient執行模式

在這裡插入圖片描述

  1. 程式碼塊的提交、sparkshell的執行
  2. sparksubmit在AM下啟動master執行Driver對任務進行劃分和切片、初始化sparkcontext,
  3. Driver向RM申請啟動一臺機器並啟動EL,RM會選擇一臺機器並啟動EL(EL執行的仍然是AM中的main方法,然後EL會繼續申請資源。
  4. 獲取資源後EL會向資源機器傳送啟動EB,並建立Executor物件的指令,指令傳送成功之後向RM回覆,RM並將這一資訊返回給Driver,
  5. Driver獲取資訊後,向Executor分配任務。

##stage任務劃分(在Driver端進行)
在這裡插入圖片描述

  1. Application是每初始化一個Sparkcontext都會產生一個。job是根據行動運算元的個數來決定,每一個行動運算元產生一個job。stage個數是根據寬依賴的個數加1。Task是由每一個stage最後一個RDD分割槽來決定。
  2. 任務開始是在遇到行動運算元之後才開始然後逐步向前推進先尋找寬依賴個數來判斷stage的個數。
  3. 然後再通過TaskSheduler通過Taskset獲取job中所有的task,然後序列化再發往Executor。

相關文章