1. 程式人生 > 其它 >hadoop入門(15):YARN

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根據本次程式內部具體情況為它申請資源,並監控它的整個執行流程,直到執行完成。
三: ApplicationMaster啟動成功後,首先向ResourceManager註冊並保持通訊,如此使用者就可以直接通過ResourceManager直接檢視應用程式執行狀態。
四: ApplicationMaster為本次程式內部的各個Task任務向ResourceManager申請資源,並監控其執行狀態。
五: 一旦ApplicationMaster申請到資源,便會與對應的NodeManager通訊,要求其啟動任務。
六:
NodeManager為任務設定好環境後,將任務啟動命令寫到一個腳本當中,並通過執行該指令碼啟動任務。
七: 各個任務通過RPC協議向ApplicationMaster彙報自己的狀態和進度。ApplicationMaster可以根據這些狀態在任務失敗時重啟任務。
八: 應用程式完成後,ApplicationMaster向ResourceManager登出並關閉自己。


資源排程器Scheduler

三種排程器:先進先出排程器(FIFO)、容量排程器(Capacity)、公平排程器(Fair)
Apache版本YARN預設採用容量排程器,可在yarn-site.xml中yarn.resourcemanager.scheduler.class中修改。


容量排程器(Capacity)是hadoop3預設的排程策略。該策略允許多個組織共享整個叢集資源,每個組織可以獲得叢集的一部分計算能力。
通過為每個組織分配專門的佇列,再為每一個佇列分配一定的叢集資源,這樣整個叢集就可以通過設定多個佇列為多個組織提供服務了。