YARN-Hadoop集羣資源管理系統

YARN:Yet Another Resource Negotiator,它是在Hadoop2.0版本中出現的。YARN是一個集羣資源管理系統,負責集羣的統一管理和調度。
  1. 類似分佈式操作系統
  2. Master/Slave架構
  3. 管理CPU及Memory
  4. 運行在YARN上的MR類似一個個應用
 
一、使用YARN解決了什麼問題
  1. 解決了NameNode的單點故障問題,可以通過配置NameNode高可用來實現
  2. 提出了HDFS聯邦,可以實現多個NameNode分別管理不同的目錄,從而實現訪問隔離及橫向擴展
  3. 把資源管理和應用程序管理分開(分別使用:ResourceManager和ApplicationMaster)
  4. 具有向後兼容的特點
  5. YARN是一個框架管理器,可以把各種計算框架移植到YARN上,統一由YARN進行管理和資源調度(支持的計算框架:MapReduce,Storm,Spark,Flink……)
 
二、關於YARN基本架構的簡介
在MR1中,JobTrcker有兩個功能:資源管理、作業調用
在YARN中分別使用ResourceManager和ApplicationMaster進程實現上述的兩個功能
ResourceManager:負責完成整個集羣的資源管理和調度
ApplicationMaster:負責應用程序的相關事項
系統中所有應用資源調度的最終決定權由ResourceManager擔當。每個應用的ApplicationMaster實際上是框架指定的庫,其從ResourceManager調度資源並與NodeManager一同執行監控任務,NodeManager會通過心跳信息向ResourcesManager彙報自己所在節點的資源使用情況。
 
ResourceManager
整個集羣當中只有一個,負責集羣資源的統一管理與調度
它主要功能如下:
  1. 處理 客戶端的請求
  2. 監控/啓動ApplicationMaster(每一個應用對應一個ApplicationMaster,一個MR對應一個)
  3. 監控NodeManager(負責節點資源管理和使用,管理CPU和內存)
  4. 資源分配和調度
 
NodeManager:
每個節點有一個,負責資源管理和使用
NodeManager它是框架的代理,負責監控Container資源使用情況並提供類似ResourceManager或者Scheduler之類提供的報告
它主要功能:
  1. 單個節點上的資源管理與任務管理
  2. 處理來自ResourceManager的命令
  3. 處理來自ApplicationMaster的命令
        NodeManager與DN在一臺機器,其中NM:資源(CPU、內存);DN:數據
 
ApplicationMaster
每一個應用程序有一個,負責應用程序的管理和任務調度
它主要功能:
  1. 數據切分
  2. 爲應用程序申請資源(向ResourceManager申請),並進一步分配給內部任務
  3. 任務監控和容錯
ApplicationMastr進程負責接收作業提交,協商首個Container執行應用指定的ApplicationManager(ResourceManager包含Scheduler和ApplicationManager)並提供重啓失敗的ApplicationManager Container的服務
 
Container
對任務運行環境的抽象
描述一系列信息
  1. 任務運行資源(節點、CPU、內存)
  2. 任務啓動命令
  3. 任務運行環境
把一個應用切分成了多個部分
資源進行隔離,如:某個應用需要2G內存,與其它內存隔離,相互之間不干擾
 
YARN的工作流程
  1. 用戶向YARN中的ResourceManager提交應用程序(用戶程序、啓動ApplicationMaster命令、ApplicationMaster程序……)
  1. ResourceManager爲應用程序分配Container,接下來與Container所在的NodeManager進行通信,並由NodeManager在Container中啓動對應的ApplicationMaster
  2. ApplicationMaster在Resource中進行註冊,然後會爲這個應用程序的各項任務申請資源,並監控其運行狀態直至結束
  3. ApplicationMster採用輪詢的方式,基於RPC協議向ResouceManager申請和獲取所需要的資源
  4. ApplicationMaster申請到資源後,它會和申請到的Container所對應的NodeManager進行交互通信,同時要求在Container中啓動任務
  5. NodeManager爲要啓動的任務準備好運行環境,並把啓動命令寫在一個腳本中,通過這個腳本來運行任務
  6. 每個任務基於RPC協議向對應的ApplicationMaster彙報自己的運行狀態與進度,保證ApplicationMaster可以實時獲取到任務的運行狀態,這樣就可以在任務運行失敗時重啓任務
  7. 在應用程序運行完後,對應的ApplicationMaster會與ResourceManager通信要求註銷和關閉自己
 
三、如何搭建YARN
1.在hadoop的配置文件中新增信息 mapred-site.xml
   <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
2.對於yarn-site.xml配置文件進行編輯
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>192.168.2.2:8031</value>
</property>
<property>
    <name>yarn.resourcemanager.address</name>
    <value>192.168.2.2:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>192.168.2.2:8034</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>192.168.2.2:8088</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log.server.url</name>
</property>
注意:
在啓動時可能會報錯如下:
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
這個時候需要在sbin目錄下對yarn-start.sh和yarn-stop.sh進行編輯,在頭部添加如下信息
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
3.啓動yarn
start-yarn.sh
啓動後可以看到各個節點上有nodeManager,在配置resourceManager的機器上可以看到resourceManager(使用命令jps查看)
可以訪問如下地址: http://192.168.2.2:8088/(這個地址在yarn-site.xml中有配置 )
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章