資源調度框架YARN

1. YARN產生背景

  1. Hadoop1.x時:MapReduce1.x存在問題:單點故障&節點壓力大不易擴展&不能支持除了MR以外的任務
    • MapReduce:Master/Slave架構,一個JobTracker帶多個TaskTracker。
    • JobTracker:負責資源管理和作業調度。整個集群中只有一個JobTracker,如果出現故障,整個集群就會崩潰。
    • TaskTracker:定期向JT匯報本節點的健康狀況、資源使用情況、作業執行情況;接受到來自JT的命令:啟動/殺死任務。
  2. 資源利用率&運維成本
  3. YARN:不同計算框架可以共享同一個HDFS集群上的數據,享受整體的資源調度。
  4. XXX(Spark/MapReduce/Strom/Flink) on YARN的好處:與其他計算框架共享集群資源,按資源需要分配,進而提高集群資源的利用率。

2. YARN概述

  1. Yet Another Resource Negotiator
  2. 通用的資源管理系統
  3. 為上層應用提供統一的資源調度

3. YARN架構

yarn架構.jpg
  1. ResourceManager: RM
    • 整個集群同一時間提供服務的RM只有一個(生產一般有兩個,一主一備),負責集群資源的統一管理和調度。
    • 處理客戶端請求:提交一個作業,殺死一個作業。
    • 監控我們的NM,一旦某個NM掛了,那么該NM上運行的任務需要告訴我們的AM來如何進行處理(重啟)。
  2. NodeManager: NM
    • 整個集群中有多個,負責自己本身節點資源管理和使用。
    • 定時向RM匯報本節點的資源使用情況。
    • 接受并處理來自RM的各種命令:啟動Container。
    • 處理來自AM的命令。
    • 單個節點的資源管理。
  3. ApplicationMaster: AM
    • 每個應用程序對應一個:MR、Spark、負責應用程序的管理。
    • 為應用程序向RM申請資源(core、memory),分配給內部Task處理。
    • 需要與NM通信:啟動/停止task,task是運行在container里面,AM也是運行在container里面的。
  4. Container
    • 封裝了CPU、Memory等資源的一個容器。
    • 是一個任務運行環境的抽象。
  5. Client
    • 提交作業
    • 查詢作業的運行進度
    • 殺死作業

4. YARN執行流程

yarn調用流.jpg

5. YARN環境搭建

  1. mapred-site.xml
<configuration>
    <!--告訴MapReduce,任務跑在yarn上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  1. yarn-site.xml
<configuration>
    <!--告訴yarn的NodeManage用的哪一個-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  1. 啟動YARN相關進程:sbin/start-yarn.sh
  1. 驗證YARN是否啟動成功
  2. 停止YARN相關進程:sbin/stop-yarn.sh

6. 提交作業到YARN執行

  1. MapReduce作業提交到YARN上運行
    • 使用Hadoop MapReduce示例程序:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar
    • 啟動MR程序:hadoop jar hadoop-mapreduce-examples-3.1.0.jar pi 1 2
    • 使用http://localhost:8088 查看結構
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容