hadoop入門(15):YARN
簡介
- apache hadoop yarn(yet another Resource Negotiator) 是一種新的hadoop資源管理器。
- YARN是一個通用的資源管理系統和排程平臺,可為上層應用提供統一的資源管理和排程。
- YARN的引入為叢集在利用率、資源統一管理和資料共享等方面帶來了巨大的好處。
功能說明
資源管理系統:叢集的硬體資源,和程式執行相關,比如記憶體、cpu
排程平臺:多個程式同時申請計算資源如何分配,排程的規則(演算法)
通用:不僅僅支援MapReduce程式,理論上支援各種計算程式,如Spark、Flink……
架構、元件
-
ResourceManager
叢集物理層面。
yarn叢集中的主角色,決定系統中所有應用程式之間資源分配的最終許可權。
接收使用者提交,並通過NodeManager分配、管理各個機器上的計算資源。 -
NodeManager
叢集物理層面。
yarn中的從角色,一臺機器上一個,負責管理本機器上的計算資源。
根據ResourceManager命令啟動Container容器、監視容器的資源使用情況,並向ResourceManager彙報資源使用情況。 -
App Mstr(ApplicationMaster)
App層面。
使用者提交的每一個App都包含ApplicationMaster。
應用程式中的老大,負責應用程式中各階段的資源申請,監督程式的執行情況。 -
Client
客戶端,提交資料。 -
Container容器
資源的抽象。
互動流程
當用戶向YARN提交一個應用程式後,YARN分兩個階段執行。
一:
二: 由ApplicationMaster根據本次程式內部具體情況為它申請資源,並監控它的整個執行流程,直到執行完成。
三: ApplicationMaster啟動成功後,首先向ResourceManager註冊並保持通訊,如此使用者就可以直接通過ResourceManager直接檢視應用程式執行狀態。
四: ApplicationMaster為本次程式內部的各個Task任務向ResourceManager申請資源,並監控其執行狀態。
五: 一旦ApplicationMaster申請到資源,便會與對應的NodeManager通訊,要求其啟動任務。
六:
七: 各個任務通過RPC協議向ApplicationMaster彙報自己的狀態和進度。ApplicationMaster可以根據這些狀態在任務失敗時重啟任務。
八: 應用程式完成後,ApplicationMaster向ResourceManager登出並關閉自己。
資源排程器Scheduler
三種排程器:先進先出排程器(FIFO)、容量排程器(Capacity)、公平排程器(Fair)
Apache版本YARN預設採用容量排程器,可在yarn-site.xml中yarn.resourcemanager.scheduler.class中修改。
容量排程器(Capacity)是hadoop3預設的排程策略。該策略允許多個組織共享整個叢集資源,每個組織可以獲得叢集的一部分計算能力。
通過為每個組織分配專門的佇列,再為每一個佇列分配一定的叢集資源,這樣整個叢集就可以通過設定多個佇列為多個組織提供服務了。