Hadoop学习之yarn
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Hadoop學習之YARN
1 YARN簡介
1.1 概述
YARN (Yet Another Resource Negotiator)是一個資源調度平臺,負責為運算程序提供服務器運算資源,相當于一個分布式的操作系統平臺,而 MapReduce 等運算程序則相當于運行于操作系統之上的應用程序。
YARN 是 Hadoop2.x 版本中的一個新特性。是為了解決第一代 MapReduce 編程框架的不足,提高集群環境下的資源利用率,使其具有更好的擴展性,可用性,可靠性,向后兼容性,以 及能支持除 MapReduce 以外的更多分布式計算程序。
YARN 并不清楚用戶提交的程序的運行機制,與運行的用戶程序完全解耦,YARN 上可以運行各種類 型的分布式運算程序(MapReduce 只是其中的一種),比如 MapReduce、Storm 程序,Spark 程序等,只要他們各自的框架中有符合YARN 規范的資源請求機制即可,所以yarn 就成為一個通用的資源調度平臺,各種運算集群都可以整合在一個物理集群上,提高資源利用率,方便數據共享。
1.2 產生背景
Hadoop1.x 版本中是沒有yarn的,兩大核心組件為HDFS和MapReduce,HDFS負責分布式存儲,MapReduce負責分布式計算,即負責編程又負責計算(編程套路+計算流程),計算流程的資源都是有MapReduce調度的,MapReduce在進行任務運算的時候是分為兩個進程的jobtracker和tasktracker。
jobtracker:計算的主節點,存在單點故障。主要任務有①既要負責整個集群的資源調度,在每一個集群中還要執行多個mr任務;②還要負責每個任務啟動以及進度跟蹤,mapreduce任務,跟蹤maptask和reducetask的進度。
tasktracker:計算的從節點,提供資源,負責計算。將整個節點的資源分為2部分mapslot和reduceslot,當只有 maptask?時,reduceslot 不能用;當只有 reducetask?時,maptask 不能用,資源極大的浪費。
缺陷總結:
①單點故障,可靠性低
②擴展性差
③資源利用率低
④資源調度只能為MapReduce服務,計算框架的資源調度使用受限
因為hadoop1.x的以上缺陷,hadoop2.x引入了yarn,yarn的最基本的想法是將資源調度和進度跟蹤分開,hadoop2.x中mapreduce負責編程套路(邏輯),yarn 負責資源調度。
?
2 YARN的架構
(1)ResourceManager:主節點,負責接收客戶端的請求,提供資源調度,負責整個集群的資源調度。它主要由兩個組件構成:ASM(ApplicationsManager,應用程序管理器)和Scheduler(調度器)。
應用程序管理器(ASM):負責所有任務的管理,每一個任務的啟動銷毀,每一個任務的進度跟蹤,管理每一個應用程序的MRAppMaster(即負責每一個MRAppMaster 啟動和銷毀,跟蹤MRAppMaster 運行狀態,失敗嘗試重啟)。
MRAppMaster(MapReduce Application Master):MapReduce 中,每一個應用程序運行的時候,先啟動MRAppMaster負責管理整個應用程序,它的主要工作有:①幫助當前應用程序申請資源;②啟動maptask和reducetask,③跟蹤maptask任務和reducetask任務的運行狀態和進度;④進行maptask和reducetask 資源的回收。
?
調度器(Scheduler):決定的任務的執行順序
Yarn中的三種調度器如下:
①FIFO(First In First Out):隊列調度器
內部維護的是單一的隊列,哪一個任務先提交,就先進行資源分配,任務運行。
缺點:如果前面有一個大任務 ?后面的任務阻塞。
②FAIR:公平調度器
只有這一個job在運行,此時它獲得了所有集群資源;當有多個任務時,所有任務平分資源。
缺點:沒有根據任務大小進行資源分配
③CAPACITY:容器調度器
也稱為計算能力調度器,可以根據任務,需要或公司每個組的真是需要,手動配置資源占比。如組1為測試組,占20% ,組2為生產占80%。每個組的內部維護了多個隊列,每一個隊列,都是FIFO 。
調度器總結:CAPACITY是apache版本默認使用的調度器,FAIR是CDH版本的hadoop默認使用的調度器,使用哪種調度器取決于yarn-site.xml當中的yarn.resourcemanager.scheduler.class 屬性。
(2)NodeManager:從節點,真正的資源提供者,為計算任務提供資源,需要資源的時候提供,運行完成時回收資源,動態提供資源是以container為單位提供,一個container對應一個maptask或一個reducetask。
container:抽象出來的邏輯資源容器 ,nodemanager提供資源的基本單位或最小單位 ? 內部封裝了一定的資源(cpu,內存,磁盤,網絡,io)。
?
3 資源調度過程
(1)客戶端提交任務(如hadoop jar...),客戶端先去ResourceManager申請資源;
(2)ResourceManager返回一個資源節點用于啟動當前應用程序(job)的MRAppMaster;
(3)ResourceManager到對應的節點上啟動MRAppMaster;
(4)MRAppMaster向ResourceManager申請資源(如maptask或reducetask);
(5)ResourceManager向MRAppMaster返回對應的資源節點;
(6)MRAppMaster到對應的資源節點上啟動一個container在其中運行maptask任務;
(7)maptask向MRAppMaster匯報自己的狀態和進度;
(8)當MRAppMaster獲取到有一個maptask運行完成之后,就啟動一個container在其中運行reducetask任務;
(9)reducetask啟動后,向MRAppMaster匯報自己的狀態的進度;
(10)每一個maptask和reducetask運行完成之后,MRAppMaster就會到對應的節點上進行資源回收;
(11)整個任務運行完成,MRAppMaster向ResourceManager匯報并注銷自己,并把整個運行結果返回給客戶端。
?
4 job提交流程
?
?
總結
以上是生活随笔為你收集整理的Hadoop学习之yarn的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle聚合函数wmsys,orac
- 下一篇: a算法TSP旅行商java_A*算法实现