Spark 的 Yarn-cluster 模式和 Yarn-client 模式

Spark 支持 Yarn 集群的部署模式,在 Spark On Yarn 模式下,每個 Spark 的 Executor 作為一個 Yarn container 在運行,同事支持多個任務(wù)在同一個 container 中運行。

Yarn 的 Application Master 概念:在 Yarn 中,每個 application 都有一個 Application 都有一個 Application Master 進程,它是 Application 啟動的第一個容器,負責從 ResourceManager 中申請資源,分配資源,同時通知 NodeManager 來為 Application 啟動 Container。

Spark On Yarn 有兩種模式,一種是 Yarn-client 模式,一種是 Yarn-cluster 模式。一般情況下,Yarn-client 模式使用在調(diào)試模式下,Yarn-cluster 模式使用在生產(chǎn)環(huán)境中。

1,Yarn-cluster 模式

在 Yarn-cluster 模式下,driver 運行在 Appliaction Master 上,Appliaction Master 進程同時負責驅(qū)動 Application 和從 Yarn 中申請資源,該進程運行在 Yarn container 內(nèi),所以啟動 Application Master 的 client 可以立即關(guān)閉而不必持續(xù)到 Application 的生命周期,下圖是 Yarn-cluster 模式:

Yarn-cluster

在 Yarn-cluster 模式中,當用戶向 Yarn 中提交一個應用程序后,Yarn 將分兩個階段運行該應用程序:

  1. 第一個階段是把 Spark 的 driver 作為一個 ApplicationMaster 在 Yarn 集群中先啟動;
  2. 第二個階段是由 ApplicationMaster 創(chuàng)建應用程序,然后為它向 ResourceManager 申請資源,并啟動 Executor 來運行 Task,同時監(jiān)控它的整個運行過程,直到運行完成。

應用的運行結(jié)果不能在客戶端顯示(可以在 history server 中查看),所以最好將結(jié)果保存在 HDFS 而非 stdout 輸出,客戶端的終端顯示的是作為 Yarn 的 job 的簡單運行狀況。

2,Yarn-client 模式

在 Yarn-client 中,driver 運行在 client 上,通過 ApplicationMaster 向 RM 獲取資源。本地 driver 負責與所有的 executor container 進行交互,并將最后的結(jié)果匯總。結(jié)束掉終端,相當于 kill 掉這個 Spark 應用。因為 driver 在客戶端,所以可以通過 webUI 訪問 driver 的狀態(tài),默認是 http://hadoop1:4040 訪問,而 Yarn 通過 http:// hadoop1:8088 訪問。工作流程如下圖:

Yarn-client模式

具體的執(zhí)行流程如下圖所示:

具體執(zhí)行流程

對比兩種模式可以看出一點,Yarn-client 模式下的 driver 進程執(zhí)行在本地機器上,而 Yarn-cluster 模式下的 driver 進程執(zhí)行在 Yarn 集群上面。

參考:https://www.cnblogs.com/ITtangtang/p/7967386.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容