Yarn框架深入理解【Yarn集羣配置】

一、Yarn框架產生的背景與原因

我們都知道Hadoop誕生的目標是爲了支持十幾臺機器的搜索服務,但是隨着數據的增加,數據的可用性也是一個待解決的問題。但是Hadoop框架的自身問題限制了集羣的發展。

首先是,JobTracker和NameNode的單點問題,嚴重製約了集羣的擴展和可靠性。

MapReduce採用了基於slot的資源分配模型,slot是一種粗粒度的資源 劃分單位,通常一個任務不會用完槽位對應的資源,且其他任務也無法使用這些空閒資源,同時map的槽位和reduce的槽位是不可以通用的。會導致部分資源緊張,部分資源空閒。

同時爲了滿足在線計算等新的計算框架,MapReduce這種離線計算框架已經不能滿足需求。

 

使用Yarn可以提高資源利用率:

所有計算框架運行在一個集羣中,共享一個集羣的資源,做到按需分配

 

二、Yarn框架介紹 

Yet Another Resource Negotiator     通用資源管理系統

可以爲上層框架提供統一的資源管理和調度

JobTracker在 YARN 中JobTracker大約分成了 3 塊:

  • 一部分是 ResourceManager,負責 Scheduler 及
    ApplicationsManager;
  • 一部分是 ApplicationMaster,負責 job 的生命週期管理;
  • 最後一部分是 JobHistroyServer,負責日誌的展
    示。
    爲了支持更多的計算模型,把以前的 TaskTracker 替換成了 NodeManager。NodeManager 管理各種各樣的 container。Container
    纔是真正幹活的。計算模型相關的事情可以放在 NodeManager 的一個擴展服務中,如 MAP-REDUCE 的 shuffle。

 

 

三、各大模塊分析

Client

可以向RM(ResourceManager)提交任務、殺死任務

 

ResourceManager

RM 是一個全局的資源管理器,負責整個系統的資源管理和分配,包括 scheduler 和 Application Manager, Node Manager

對調度器來說,YARN 提供了多種直接可用的調度器, Fair Scheduler 和 Capacity Scheduler 等。調度器僅根據各個應用程序的資源需求進行資源分配,分配的基本單位是Container,而容器裏面是將內存,CPU,網絡,磁盤封裝到一起。

處理來自客戶端的請求:提交、殺死

啓動/監控 AM、監控NM

同時用戶也可設計自己的調度器。

 

ApplicationMaster

對應用程序管理器來說,,包括應用程序提交、與調度器協商資源以啓動 ApplicationMaster、監控 ApplicationMaster 運行狀態並在失敗時重新啓動它等。用戶提交的每個應用程序均包含一個 ApplicationMaster,ApplicationMaster可以與RM協商申請獲取資源,也可以將得到的任務進行再分配,與NM通信啓動對應的Task,同時可以監控所有的任務狀態。數據切分,爲每個task向RM申請資源(在container執行),與NodeManager通信,實現任務的監控【如某個Task掛掉後需要重啓等】

 

NodeManager

NodeManager 管理 container、資源下載、健康檢測後彙報 對節點管理器來說,NM是每個節點上的資源和任務管理器,一方面,它會定時地向 RM 彙報本節點上的 資源使用情況和各個 Container 的運行狀態;另一方面,它接收並處理來自 AM 的 Container 啓動 / 停止等各種請求。

 

Container

Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如內存、 CPU、磁盤、網絡等,當 AM 向 RM 申請資源時,RM 爲 AM 返回的資源便是用 Container 表示的。YARN 會爲每個任務分配一個 Container,且該任務只能使用該 Container 中描述的 資源。容器是一個動態劃分資源。

 

Jobhistory 機制

在 MRv1 中,JobHistroy server 是嵌入在 Jobtracker 中的,當有大量的查詢 時,對 Jobtracker 造成很大的壓力.Yarn中實現一套單獨的 JobHistroy server 服務。AggregatedLogDeletionService:日誌文件的 管理。  HistoryClientService:提供一些服務供 JobClient 查詢。


 

四、Yarn工作流程

 

  • 1.客戶端Client 向 YARN 中提交應用程序,其中包括 ApplicationMaster 程序、啓動 ApplicationMaster 的命令、用戶程序等。
  • 2.ResourceManager 爲該應用程序分配第一個 Container,並與對應的 NodeManager 通信,要求它在這個 Container 中啓動應用程序的 ApplicationMaster。
  • 3 ApplicationMaster 首先向 ResourceManager 註冊,這樣用戶可以直接通過 ResourceManage 查看應用程序的運行狀態,然後它將爲各個任務申請資源,並監控它的運行狀態,直到運行結束,即重複步驟 4~7。
  • 4 ApplicationMaster 採用輪詢的方式通過 RPC 協議向 ResourceManager 申請和領取資源。 
  • 5. 一旦 ApplicationMaster 申請到資源後,便與對應的 NodeManager 通信,要求它啓動任務。
  • 6. NodeManager 爲任務設置好運行環境(包括環境變量、JAR 包、二進制程序 等)後,將任務啓動命令寫到一個腳本中,並通過運行該腳本啓動任務。
  • 7. 各個任務通過某個 RPC 協議向 ApplicationMaster 彙報自己的狀態和進度,以讓 ApplicationMaster 隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啓動任務。 在應用程序運行過程中,用戶可隨時通過 RPC 向 ApplicationMaster 查詢應用程序的當前運行狀態。
  • 8. 應用程序運行完成後, ApplicationMaster 向 ResourceManager 註銷並關閉自己。

 

五、Yarn集羣配置

node manager在物理上應該跟data node部署在一起

resource manager在物理上應該獨立部署在一臺專門的機器上

cd /root/apps/hadoop-2.8.5/etc/hadoop

1、修改配置文件:

vi yarn-site.xml

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hdp-01</value>
  </property>


  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

其中,名稱yarn.resourcemanager.hostname指的是運行ResourceManager機器所在的節點位置;名稱yarn.nodemanager.aux-services在hadoop2.2.0版本中是mapreduce_shuffle,一定要看清楚。

修改mapred-site.xml,內容如下(默認是template後綴結尾,去掉後綴改爲xml即可)

<configuration> 
 <property> 
  <name>mapreduce.framework.name</name> 
  <value>yarn</value> 
 </property> 
</configuration>

其中,名稱mapreduce.framework.name指的是使用yarn運行mapreduce程序。

 

啓動了HDFS之後,就可以啓動yarn了。執行命令start-yarn.sh即可啓動MapReduce集羣。

 

  1. scp這個yarn-site.xml到其他節點
    scp yarn-site.xml hdp-02:$PWD
    scp yarn-site.xml hdp-03:$PWD
  2. 啓動yarn集羣:start-yarn.sh  (注:該命令應該在resourcemanager所在的機器上執行)
  3. 用jps檢查yarn的進程,用web瀏覽器查看yarn的web控制檯

          http://hdp-01:8088

關於參數yarn-site.xml 修改

http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

 

 

六、MapReduce程序在Yarn啓動-運行-註銷全流程

 


 

本文部分參考文章:https://www.jianshu.com/p/bac54467ac3a

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章