spark 6 spark執行架構和任務排程

2021-10-08 22:03:41 字數 1532 閱讀 1575

簡單來講:driver端劃分任務,向資源管理器傳送申請資源,executor向driver端(不是master)申請task,負責執行任務

driver端向資源管理器master(可能是hmaster或者yarn的nodemanager)傳送註冊和申請計算資源的請求

master通知對應的worker節點啟動executor程序(計算資源)

executor程序向driver端傳送註冊並申請task請求

driver端執行客戶端的main方法,構建sparkcontext物件,在sparkcontext物件內部一次構建dagschedulertaskscheduler

按照客戶端**生成rdd的一系列操作順序,生成dag有向無環圖

dagscheduler拿到dag有向無環圖之後,按照寬依賴進行stage的劃分。每乙個stage內部有很多可以並行執行的task,最後封裝在乙個乙個的taskset集合中,然後把taskset傳送給taskscheduler

taskscheduler得到taskset集合之後,依次遍歷取出每乙個task提交到worker節點上的executor程序中執行

所有task執行完成,driver端向master傳送登出請求,master通知worker關閉executor程序,worker上的計算資源得到釋放,最後整個任務也就結束了。

幾點注意事項

誰負責劃分任務

dagsheduler提交給taskscheduler的基本單位是什麼?

executor執行的基本單位是什麼?

注意第七步

driver端執行客戶端的main方法,構建sparkcontext物件,在sparkcontext物件內部依次構建dagscheduler和taskscheduler

按照rdd的一系列操作順序,來生成dag有向無環圖

dagscheduler拿到dag有向無環圖之後,按照寬依賴進行stage的劃分。每乙個stage內部有很多可以並行執行的task,最後封裝在乙個乙個的taskset集合中,然後把taskset傳送給taskscheduler

taskscheduler得到taskset集合之後,依次遍歷取出每乙個task提交到worker節點上的executor程序中執行。

所有task執行完成,整個任務也就結束了

注意

Spark執行架構

job 包含多個task組成的平行計算,乙個dag觸發的作業,由action運算元觸發,在sparkcontext中通過runjob方法向spark提交job stage job的排程單位,每個job會根據rdd的寬依賴關係被切分成很多stage,每個stage中包含一組相同的task,這組task...

Spark執行架構

在driver program中新建sparkcontext 包含sparkcontext的程式稱為driver program 2 sparkcontext向資源管理器申請執行executor資源,並啟動standaloneexecutorbackend,executor向sparkcontent...

Spark執行架構

spark執行架構要背下來 driver program 執行main函式的程序,並且建立了乙個sparkcontext cluster manager 乙個從cluster申請資源的外部服務 deploy mode 區分driver程序跑在 client模式下,driver跑在本地 cluster...