1. 程式人生 > 其它 >Hadoop 入門筆記—核心元件 YARN

Hadoop 入門筆記—核心元件 YARN

基本概述
Apache YARN (Yet Another Resource Negotiator) 是 Hadoop 中的資源管理和作業排程系統, 在 Hadoop 2.x 時才被引入。

使用者可以將各種服務框架部署在 YARN 上,由 YARN 進行統一地管理和資源分配。

Yarn在 Hadoop2.x 時才被推出,在 Hadoop1.x 時,主要由 MapReduce 進行資源分配,由於考慮到如果 MapReduce 在計算中掛掉了,那麼資源排程也將停止工作,於是在新版本中將資源排程這部分功能剝離開,才有 Yarn。

核心架構
大資料培訓學習過程中我們都學過Yarn 的主要架構分為四個部分:ResourceManager、NodeManager、ApplicationMaster、Container

ResourceManager
ResourceManager 通常在獨立的部署在一臺機器作為應用執行,叢集中只有一個,負責整個系統的資源管理和分配。
ResourceManager 主要由兩個元件構成:排程器(Scheduler)和應用程式管理器(Applications Manager,ASM)。能夠根據應用程式優先順序、佇列容量、資料位置等資訊,做出決策,通過安全的、共享的、多租戶的方式制定分配策略,排程叢集資源。


NodeManager
NodeManager 是 YARN 叢集中的每個具體節點的管理者。主要負責該節點內所有容器的生命週期的管理,監視資源和跟蹤節點健康。
NodeManager 主要用來處理來自ResourceManager 、ApplicationMaster的命令。
一個節點啟動時,它會向 ResourceManager 進行註冊並推送可用資源資訊。在執行期,通過 NodeManager 和 ResourceManager 協同工作,這些資訊會不斷被更新並保障整個叢集發揮出最佳狀態。

ApplicationMaster
在使用者提交一個應用程式時,YARN 會啟動一個輕量級的程序ApplicationMaster。
ApplicationMaster 負責協調來自ResourceManager 的資源,並通過NodeManager 監視容器內資源的使用情況,同時還負責任務的監控與容錯。
ApplicationMaster 將能將資料進行拆分,並根據應用的執行狀態動態匹配資源需求,能夠監控跟蹤任務狀態和進度,報告應用的進度資訊。

Container
Container是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如記憶體、CPU、磁碟、網路等。
當ApplicationMaster 向ResourceManager 申請資源時,ResourceManager 為ApplicationMaster 返回的資源是用Container 表示的。
YARN 會為每個任務分配一個Container,該任務只能使用該Container 中描述的資源。
ApplicationMaster 可在Container 內執行任何型別的任務。

工作流程
YARN 應用提交的整個工作流程:

首先客戶端提交任務到 YARN 上,ResourceManager 提交應用並請求一個ApplicationMaster 例項;
ResourceManager 會選擇一個可執行的NodeManager,並在Container 中啟動並執行ApplicationMaster 例項;
啟動中的ApplicationMaster 向ResourceManager 註冊自己,啟動成功後與RM保持心跳。
ApplicationMaster 向ResourceManager 傳送請求,獲取需要的Container 資源;
ApplicationMaster 通過獲取到的Container 資源執行分散式計算。
應用執行結束後,ApplicationMaster 向ResourceManager 登出自己,並允許屬於它的container 被收回。

總結
Yarn 主要在 Hadoop 體系中負責服務資源的排程分配,能夠最大限度的利用機器資源,高效調配,達到資源利用的最大化。