Spark原始碼走讀2 Spark Submit

2022-07-21 02:39:14 字數 1799 閱讀 9191

這裡主要說明作業提交的過程原始碼。sparksubmit在org.apache.spark.deploy中,submit是乙個單獨的程序,首先檢視它的main方法:

createlaunchenv方法中設定了一些配置引數:如返回值、集群模式、執行環境等。這裡主要檢視client的集群模式。下面看下作業提交序列圖:

client的啟動方法prestart。

client是乙個actor,client提交任務,首先需要封裝好driverdescription引數。包括jar檔案url、momory、cpu cores等。然後向master傳送requestsubmitdriver訊息。

master中接收requestsubmitdriver訊息的處理:

這裡主要看下schedule這個方法:

上面原始碼中。主要看;兩個方法launchdriver、launchexecutor

launchdriver:是讓worker來啟動driver

master向worker傳送了launchdriver和launchexecutor。這裡在就跟蹤worker下怎麼處理master傳送的這兩個訊息。

launchdriver啟動driver

worker建立乙個executorrunner執行緒,executorrunner會啟動executorbackend程序

這裡真正的執行方法在executorrunner中的fetchandrunexecutor方法中。

接下來從一張流程圖中簡要描述了作業提交的流程。

2)客戶端的driver向master註冊。

3)master會讓worker啟動exeuctor。

4)worker建立乙個executorrunner執行緒,executorrunner會啟動executorbackend程序。 executorbackend啟動後會向driver的schedulerbackend註冊。

5)driver的dagscheduler解析作業並生成相應的stage,每個stage包含的task通過taskscheduler分配給executor執行。 所有stage都完成後作業結束。

Spark原始碼走讀6 Shuffle

在map和reduce之間的過程就是shuffle,shuffle的效能直接影響整個spark的效能。所以shuffle至關重要。從圖中得知,map輸出的結構產生在bucket中。而bucket的數量是map reduce的個數。這裡的每乙個bucket都對應乙個檔案。map對bucket書是寫入資...

kube scheduler原始碼走讀

螞蟻金服kubernetes方向招聘 kube scheduler是k8s中相對比較簡單的乙個服務,它監聽api server獲取新建的pod,從眾多的node中選擇乙個合適的,來執行該pod。選擇的過程分兩個階段 預選階段 優選階段 本文簡單的跟進一下kube scheduler執行的整個流程。入...

JDK原始碼走讀(4) 容器之LinkedList

本章分析list系列中的linkedlist,真正意義上的鍊錶,底層採用鍊錶形式儲存資料元素。linkedlist是乙個雙向鍊錶,可以向前或向後兩個方向遍歷鍊錶。linkedlist也可以存放null元素。一 類實現 繼承體系結構 為了對整個list實現 繼承體系有個全貌,先將體系結構圖畫出來 二 ...