Spark On YARN


Hadoop Yarn解析:

    1. Yarn是Hadoop推出整個分布式(大數據)集群的資源管理器,負責資源的管理和分配,基於Yarn,我們可以在同一個大數據集群上同時運行多個計算框架。例如:Spark、MapReduce、Storm等

    2. Yarn基本工作流程:

注意:Container要向NodeManager匯報資源信息,Container要向App Mstr匯報計算信息

        2.1 客戶端向ResourceManager提交Application,

        2.2 ResourceManager 接受應用並根據集群資源狀況決定在某個具體 Node 上來啟動當前提交的應用程序的任務調度器 Driver(ApplicationMaster),

        2.3 決定后,ResourceManager 會命令某個具體的 Node上的資源管理器 NodeManager 來啟動一個新的JVM進程運行程序的 Driver 部分,

        2.4 當ApplicationMaster 啟動的時候(會首先向ResourceManager注冊說明自己負責當前程序的運行)會下載 當前 Application相關的Jar等各種資源,並基於此決定向ResourceMananger申請資源的具體內容。

        2.5 ResourceManager 接受到 ApplicationMaster 的資源分配的請求之后,會最大化地滿足資源分配的請求,並把資源的元數據信息發送給ApplicationMaster,

        2.6 ApplicationMaster 收到資源的元數據信息后會根據元數據發指令給具體機器上的 NodeManager,讓 NodeManager 來啟動具體的 Container,

        2.7 Container 在啟動后必須向 ApplicationMaster 注冊,當 ApplicationMaster 獲得了用於計算的 Containers 后,開始進行任務的調度和計算,直到作業完成。

需要補充說明的是:

        (1) 如果 ResourceManager 第一次沒有能夠完全完成 ApplicationMaster 分配的資源的請求,后續 ResourceManager 發現集群中有新的可用資源時,會主動向ApplicationMaster 發送新的可用資源的元數據信息以提供更多的資源用於當前程序的運行。

        (2)如果是 hadoop 的 MapReduce 計算的話Container不可以復用,如果是 Spark On Yarn 的話,Container可以復用。

        (3)Container 具體的銷毀是由 ApplicationMaster 來決定的。 

        (4)ApplicationMaster 發指令給 NodeManager 讓NM銷毀Container.

 

Spark 運行在 YARN 上時,不需要啟動 Spark 集群,只需要啟動 YARN即可!! YARN的 ResourceManager 相當於 Spark Standalone 模式下的 Master

Spark on YARN 有兩種運行模式:

1. Cluster -- Driver 運行在 YARN集群下的某台機器上的JVM進程中

2. Client -- Driver 運行在當前提交程序的機器上

Standalone 模式下啟動Spark集群(Master 和 Worker),其實啟動的是資源管理器。真正作業的計算和資源管理器沒有關系。

 

Spark on Yarn模式下Driver和ApplicationMaster的關系:

Cluster: Driver位於ApplicationMaster進程中,我們需要通過Hadoop默認指定的8088端口來通過Web控制台查看當前Spark程序運行的信息。

Client: Driver為提交代碼的機器上,此時ApplicationMaster依舊位於集群中且只負責資源的申請和launchExecutor,此時啟動后的Executor並不會向ApplicationMaster進程注冊,而是向Driver注冊

 

另外幾點說明:

在Spark on Yarn的模式下,Hadoop Yarn的配置yarn.nodemanager.local-dirs會覆蓋Spark的spark.local.dir !!!

在實際生產環境下一般都采用Cluster,我們會通過HistoryServer來獲取最終全部的運行信息。

如果想直接看運行的日志信息,可以使用以下命令:

yarn logs –applicationId  <app ID>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM