Spark on Yarn執行機制

2022-05-29 21:15:12 字數 1688 閱讀 5305

job:包含多個 task 組成的平行計算,是由 action 行為觸發的。

task:在 executor 程序中執行任務的工作單元,多個 task 組成乙個 stage。

stage:每個 job 會被拆分很多組 task,作為乙個 taskset,其名稱為 stage。

spark 任務提交到 yarn 集群有兩種提交方式,一種是 yarn-client 模式,一種是 yarn-cluster 模式,其主要區別在於 driver 端進行所在的位置不同,下面就來看看兩種提交方式的流程。

(1)提交命令

./spark-submit  --master yarn  --deploy-mode client  --class jar包
(2)執行流程

spark yarn-client 模式執行流程

如上圖,是 spark 任務以 yarn-client 模式提交任務的流程,主要包括:

rm 收到請求,隨機選擇一台 nm(nodemanager)啟動 am。這裡的 nm 相當於 standalone 的 worker 節點。

am 啟動後,會向 rm 請求一批 container 資源,用於啟動 executor。

rm 根據資源申請找到一批 nm 返回給 am,用於啟動 executor。

am 會向 nm 傳送命令啟動 executor。

executor 啟動後,會反向註冊給 driver,driver 傳送 task 到 executor,執**況和結果返回給 driver 端。

yarn-client 模式適用於任務測試,因為 driver 端執行在本地, driver 會與 yarn 集群中的 executor 進行大量的通訊,會造成客戶端機器網絡卡流程的大量增加。

(1)提交命令

./spark-submit  --master yarn  --deploy-mode cluster  --class jar包
(2)執行流程

spark yarn-cluster 模式執行流程

如上圖,是 spark 任務以 yarn-cluster 模式提交任務的流程,主要包括:

客戶端傳送請求到 rm,請求啟動 am。

rm 收到請求後隨機在一台 nm 上啟動 am(相當於 driver 端)。

am 啟動後,傳送請求到 rm,請求一批 container 資源用於啟動 executor。

rm 返回一批 nm 節點給 am,用於啟動 executor。

am 根據返回的 nm 資源列表,傳送請求到 nm 啟動 executor。

executor 反向註冊到 am 所在節點的 driver,driver 傳送 task 到 executor。

yarn-cluster 模式主要用於生產環境中,因為 driver 執行在 yarn 集群中某一台 nm 中,每次提交任務的 driver 所在的機器都是隨機的,不會產生某一台提交機器的網絡卡流量激增的現象。缺點是任務提交後在本地看不到日誌,只能通過 yarn ui 頁面檢視日誌。

【參考資料】

session執行機制

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表 的結構 也可能就是使用 雜湊表 來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為sessionid,如果已包含乙個sessionid則說明...

try catch finally執行機制

finally的執行 如下的程式所示,注釋中是執行的順序 public class test public static string test finally public static string test1 finally其實是僅在return 語句執行前執行,如果return 乙個函式,那...

runtime執行機制

這篇文章主要介紹的是runtime是什麼以及怎麼用!希望對讀者有所幫助!第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了ru...