天天看點

Spark 中 Yarn 運作模式

簡介

spark 的 yarn 運作模式根據 Driver 在叢集中的位置分成兩種:

1)yarn-client 用戶端模式

2)yarn-cluster 叢集模式

yarn 模式和 standalone 模式不同,standalone 模式需要啟動 spark 獨立叢集,這樣 SparkContext 才能與 Master 進行互動通信。而 yarn 模式的資源管理全部托管給的 ResourceManager 了,是以它不需要啟動 spark 獨立叢集,那麼也就意味着你無法通路 http://master:8080 這個頁面了。

yarn 叢集模式

spark 的 yarn 叢集模式,Driver 運作在 Application Master 上,Application Master 程序同時負責驅動我們的代碼程式和從 ResourceManager 申請資源。由于它直接運作在 yarn 的 Container 當中,是以并不需要用戶端,用戶端可以在送出完畢之後就關閉,如圖:

Spark 中 Yarn 運作模式

1)用戶端将生成作業資訊并送出給 ResourceManager

2)ResourceManager 會選擇一個 NodeManager 去啟動 container,并且把 ApplicationMaster 配置設定給它去運作

3)NodeManager 接收到以後就會啟動 ApplicationMaster 并初始化 dag 作業,此時 NodeManager 就成為 Driver

4)ApplicationMaster 向 ResourceManager 申請資源

5)ResourceManager 配置設定資源的同時通知其它 NodeManager 啟動相應的 executor 去執行 task,并回報執行情況

6)執行完畢,釋放資源

yarn 用戶端模式

yarn 用戶端模式和 yarn 叢集模式的差別很明顯,就是在于 ApplicationMaster 僅僅負責從 ResourceManager 申請資源,而驅動代碼程式的任務還是由 Client 用戶端負責,是以 Client 用戶端在整個過程中保持運作不會像叢集模式一樣送出完就關閉,如圖:

Spark 中 Yarn 運作模式

1)用戶端生成作業資訊并送出給 ResourceManager

2)ResourceManager 在本地 NodeManager 啟動 container 并配置設定運作 ApplicationMaster

3)Client 節點會初始化 dag 作業,通過 ApplicationMaster 去向 ResourceManager 申請資源

4)Client 節點将任務分發給 executor 去執行,executor 回報執行情況

5)任務執行完畢,釋放資源

yarn-client 和 yarn-cluster 的差別

1)在 yarn-cluster 模式中,Driver 運作在 ApplicationMaster 上,而在 yarn-client 模式中 Driver 運作在 Client 上

2)yarn-cluster 模式中,Client 送出完可以直接關閉,yarn-client 模式中保持運作并和 executor 通信

3)yarn-cluster 模式中,ApplicationMaster 負責資源申請和驅動程式運作,yarn-client 模式中隻負責資源申請,運作程式由 Client 負責

4)yarn-cluster 适合生産環境,而 yarn-client 适合互動和調試

繼續閱讀