YARN產生背景
Hadoop1.x時:
- MapReduce: Master/Slave架構,1個JobTracker帶多個TaskTracker
JobTracker:
負責資源管理和做業調度node
TaskTracker:
- 按期向JT彙報本節點的健康情況、資源使用狀況、做業執行狀況;
- 接收來自JT的命令: 啓動任務/殺死任務
YARN:
不一樣計算框架能夠共享同一個HDFS集羣上的數據,享受總體的資源調度bash
XXX ON YARN的好處:
與其餘計算機框架共享集羣資源,按資源須要分配,進而提升集羣資源的利用率架構
XXX: Spark/Storm/Flink 框架
YARN 架構
1RM + N個NM oop
- ResourceManager(RM): 整個集羣同一時間提供服務(active狀態)的RM只有一個,負責集羣資源的統一管理和調度
- 提交一個做業、殺死一個做業
- 處理客戶端的請求(啓動/殺死):
- 監控咱們的NM,一旦某個NM掛了,那麼該NM上運行的任務須要告訴咱們的AM來如何進行處理
- NodeManager(NM):整個集羣中有N個負責單個節點的資源管理和使用以及task的運行狀況
- 整個集羣中有多個,負責本身自己節點資源管理和使用
- 定時向RM彙報本節點的資源使用狀況
- 接收並處理來自RM的各類命令: 啓動Container
- 處理來自AM的命令
- 單個節點的資源管理
- ApplicationMaster(AM):每一個應用/做業對應一個,負責應用程序的管理
- 每一個應用程序對應一個: MR、Spark,負責應用程序的管理
- 爲應用程序向RM申請資源(core、memory),分配給內部task
- 須要與NM通訊: 啓動/中止task,task是運行在container裏面,AM也是運行在containe
- Container
- 封裝了CPU、Memory等資源的一個容器
- 是一個任務運行環境的抽象
- Client
- 提交做業
- 查詢做業的運行進度
- 殺死做業
YARN 執行流程
- 用戶向YARN提交一個做業(例如Spark/Storm做業)
- ResourceManager會給做業分配第一個Continer,假設運行在圖中第二個NodeManager
- ResourceManager與對應NodeManager進行通訊,要求啓動對應的Continer用來啓動應用程序,ApplicationMaster
- ApplicationMaster啓動後,與ResourceManager獲取資源並進行註冊
- ApplicationMaster向ResourceManager申請Core,Memory,而後在對應的NodeManager上開始啓動任務
- 在每一個NodeManager上啓動相應的continer,並把task運行在Continer
YARN 環境搭建
1.etc/hadoop/mapred-site.xml:spa
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
複製代碼
2.etc/hadoop/yarn-site.xml:code
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
複製代碼
3.啓動YARN相關的進程orm
sbin/start-yarn.shcdn
4.驗證xml
jps
http://host:8088