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

Spark 支持 Yarn 集羣的部署模式,在 Spark On Yarn 模式下,每一個 Spark 的 Executor 做爲一個 Yarn container 在運行,同事支持多個任務在同一個 container 中運行。html

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

Spark On Yarn 有兩種模式,一種是 Yarn-client 模式,一種是 Yarn-cluster 模式。通常狀況下,Yarn-client 模式使用在調試模式下,Yarn-cluster 模式使用在生產環境中。app

1,Yarn-cluster 模式

在 Yarn-cluster 模式下,driver 運行在 Appliaction Master 上,Appliaction Master 進程同時負責驅動 Application 和從 Yarn 中申請資源,該進程運行在 Yarn container 內,因此啓動 Application Master 的 client 能夠當即關閉而沒必要持續到 Application 的生命週期,下圖是 Yarn-cluster 模式:oop

Yarn-cluster

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

  1. 第一個階段是把 Spark 的 driver 做爲一個 ApplicationMaster 在 Yarn 集羣中先啓動;
  2. 第二個階段是由 ApplicationMaster 建立應用程序,而後爲它向 ResourceManager 申請資源,並啓動 Executor 來運行 Task,同時監控它的整個運行過程,直到運行完成。

應用的運行結果不能在客戶端顯示(能夠在 history server 中查看),因此最好將結果保存在 HDFS 而非 stdout 輸出,客戶端的終端顯示的是做爲 Yarn 的 job 的簡單運行情況。cdn

2,Yarn-client 模式

在 Yarn-client 中,driver 運行在 client 上,經過 ApplicationMaster 向 RM 獲取資源。本地 driver 負責與全部的 executor container 進行交互,並將最後的結果彙總。結束掉終端,至關於 kill 掉這個 Spark 應用。由於 driver 在客戶端,因此能夠經過 webUI 訪問 driver 的狀態,默認是 http://hadoop1:4040 訪問,而 Yarn 經過 http:// hadoop1:8088 訪問。工做流程以下圖:server

Yarn-client模式

具體的執行流程以下圖所示:htm

具體執行流程

對比兩種模式能夠看出一點,Yarn-client 模式下的 driver 進程執行在本地機器上,而 Yarn-cluster 模式下的 driver 進程執行在 Yarn 集羣上面。blog

參考:www.cnblogs.com/ITtangtang/…生命週期

相關文章
相關標籤/搜索