Spark流程圖

Spark流程圖超詳細
(1) 將 Spark 程序通過 spark-submit(shell)命令提交到結點上執行,其實會通過反射的
方式,創建和構造一個 DriverActor 進程出來,通過 Driver 進程執行我們的 Application
應用程序。
(2) 應用程序的第一行一般是先構造 SparkConf,再構造 SparkContext;
(3)SparkContext 在初始化的時候,做的最重要的兩件事就是構造 DAGScheduler 和
TaskScheduler;
(4)TaskScheduler會通過對應的一個後臺進程去連接Master 向Master註冊Application;
(5)Master 通知 Worker 啓動 executor;
(6)executor 啓動之後會自己反向註冊到 TaskSchduler,所有的 executor 都反向註冊到
Driver 之後,Driver 結束 SparkContext 初始化,然後繼續執行自己編寫的代碼;
(7)每執行一個 action 就會創建一個 job;
(8)DAGScheduler 會根據 Stage 劃分算法,將 job 劃分爲多個 stage,並且爲每個 stage
創建 TaskSet(裏面有多個 task);
(9)TaskScheduler 會根據 task 分配算法,把 TaskSet 裏面每一個 task 提交到
executor 上執行;
(10)executor 每接收到一個 task,都會用 taskRunner 來封裝 task,然後從線程池取出
一個線程執行這個 task;
(11)taskRunner 將我們編寫的代碼(算子及函數)進行拷貝,反序列化,然後執行 task;
(12)task 有兩種,shuffleMapTask 和 resultTask,只有最後一個 stage 是 resultTask,
之前的都 是 shuffleMapTask;
(13)所以最後整個 spark 應用程序的執行,就是 job 劃分爲 stage,然後 stage 分批次
作爲 taskset 提交到 executor 執行,每個 task 針對 RDD 的一個 partition 執行我們
定義的算子和函數,以 此類推,直到所有的操作執行完止。

該流程圖主要參考來源https://www.bilibili.com/video/BV1L7411J7mi?from=search&seid=12643853460994435296
在這裏插入圖片描述