Hadoop2.0(HDFS2)以及YARN設計的亮點

YARN整體上仍然是Master/Slave結構,在整個資源管理框架中,ResourceManager爲Master,NodeManager爲Slave,ResouceManager負責對各個NodeManager上的資源進行統一管理和調度。當用戶提交一個應用程序時,須要提供一個用以跟蹤和管理這個程序的ApplicationMaster,它負責向ResourceManger申請資源,並要求NodeManager啓動能夠佔用必定資源的任務。html

Hadoop2.0 YARN包含如下實體,能夠看圖:node

ResourceManager(RM):全局的資源管理器,負責整個系統的資源管理和分配安全

NodeManager(NM):每一個節點上的資源和任務管理器,定時向RM彙報本節點上的資源使用狀況和各個Container的運行狀態,接收並處理來自AM的Container啓動/中止等各類請求網絡

ApplicationMaster(AM):用戶提交的每一個應用程序均包含一個AM,主要功能與RM調度器協商以獲取資源,進一步分配給內部的任務,與NM通訊啓動/中止任務,監控任務的運行狀態架構

Container:是YARN中資源的抽象,封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等。當AM向RM申請資源時,RM爲AM返回的資源即是用Container表示的。框架

 

結合YARN架構圖描述一個資源請求的流程:運維

  1. NodeManager向ResourceManager註冊各機器資源
  2. 客戶端向ResouceManager提交做業
  3. ApplicationMaster向ResouceManager請求資源,並判斷是否知足須要
  4. ResouceManager以Container的形式將資源反饋給ApplicationMaster
  5. Container做爲資源單元保證做業隔離運行

 

 

關於Hadoop2.0的安裝能夠參考這篇博文,Hadoop 2.0安裝以及不停集羣加datanode,下面對HADOOP2.0(HDFS2)以及YARN設計的亮點進行總結:分佈式

  • 1.針對Hadoop1.0中單個NameNode制約HDFS的擴展性問題,Hadoop2.0提出了HDFS Federation,它讓多個NameNode分管不一樣的目錄進而實現訪問隔離和橫向擴展。對於運行中NameNode的單點故障,經過NameNode熱備方案(NameNode HA)實現。
  • 2.在Hadoop1.0中,JobTracker由資源管理和做業控制兩部分組成,對JobTracker賦予的功能過多而形成負載太重,從設計角度上看,Hadoop未可以將資源管理相關功能與應用程序相關功能非開,形成Hadoop1.0難以支持多種計算框架。而YARN經過將資源管理和應用程序管理兩部分分剝離開,分別由ResouceManager和ApplicationMaster負責,其中,ResouceManager專管資源管理和調度,而ApplicationMaster則負責與具體應用程序相關的任務切分、任務調度和容錯等。
  • 3.在ResouceManager中,ClientRMService和AdminService兩個服務分別負責處理來自普通用戶和管理員的請求,須要注意的是,之因此讓這兩類請求經過兩個不一樣的通訊通道發送個ResourceManager,是由於要避免普通用戶請求過多致使管理員請求被阻塞而遲遲得不處處理。
  • 4.JDK中自帶一個RPC框架-RMI,之因此不直接使用該框架,主要是考慮到RPC是Hadoop最底層最核心的模塊之一,保證其輕量級、高性能和可控性顯得尤其重要,而RMI重量級過大且用戶可控之處太少(如網絡鏈接、超時和緩衝等均難以定製或者修改),Doug Cutting在Hadoop最初設計時就是這樣描述Hadoop RPC設計動機的。
  • 5.整體來講Hadoop2.0中的HDFS和YARN均採用了基於共享存儲的HA解決方案,即Active Master不斷將信息寫入一個共享存儲系統,而Standby Master則不斷讀取這些信息,以與Active Master的內存信息保持同步。當須要主備切換時,選中的Standby Master需先保證信息徹底同步後,再將本身的角色切換至Active Master。目前而言,經常使用的共享存儲系統有如下幾個:Zookeeper,NFS,HDFS,Bookeeper和QJM。HA架構均分爲手動模式和自動模式,其中手動模式是指由管理員經過命令進行主備切換,這一般用於服務升級;自動模式可下降運維成本,但存在潛在危險。
  • 6.Zookeeper設計的目的並非數據存儲,但他的確能夠安全可靠地存儲少許數據以解決分佈式環境下多個服務之間的數據共享問題。
  • 7.解決HA問題需考慮如下幾個問題:腦裂和切換對外透明。腦裂是指在主備切換時,因爲切換不完全或其餘緣由,致使客戶端和Slave誤覺得出現兩個Active Master,最終使得整個集羣處於混亂狀態。一般採用隔離機制解決腦裂問題。爲了保證整個切換是對外透明的,Hadoop應保證全部客戶端和Slave能自動重定向到新的Active Master上,一般是經過若干次嘗試鏈接舊Master不成功後,再從新嘗試新Master完成的,整個過程有必定的延時,能夠自行設置相關參數。
  • 8.ResourceManger並不會保存已經分配給 每一個ApplicationMaster的資源信息和每一個NodeManage的資源使用信息,這些都可經過相應的心跳彙報機制重構出來。正由於如此,ResouceManager HA的實現是很是輕量的。
  • 9.Hadoop調度器支持多個隊列多用戶,這種調度器容許管理員按照應用需求對用戶或者應用程序分組,併爲不一樣的分組分配不一樣的資源量,同時經過添加各類約束防止單個用戶或者應用程序獨佔資源,進而可以知足各類QoS需求,典型的表明是Yahoo!的Capacity Scheduler和Facebook的Fair Scheduler。
  • 10.YARN的內存資源隔離,默認採用線程監控的方案,提供靈活的控制策略,具體能夠看這篇博文,Hadoop YARN資源隔離技術

 

參考:oop

《Hadoop技術內幕--深刻解析YARN架構設計與實現原理》性能

《大規模分佈式系統架構與設計實踐》

相關文章
相關標籤/搜索