高可用性的ResourceManager

YARN的架構圖

有圖可知,ResourceManager(RM)對整個集羣的重要就不言而喻了吧。但是由於多種原因可能會造成ResourceManager出現問題,由於單位的集羣ResourceManager也出現問題,今天我分析一下ResourceManager的High Availability(高可用性)。

ResourceManager的作用:負責協調集羣上計算資源的分配,與NodeManager、MRApplicationMaster、HeartBeat等進行進行交互。

ResourceManager的高可用性:在Hadoop-2.4之前,ResourceManager是集羣的單點故障。ResourceManager的高可用性是以“Active/Standby(活動/備用)”的形式增加一個節點冗餘,並利用Zookeeper集羣,把Active的ResourceManager狀態信息寫入Zookeeper用於啓動Standby ResourceManager,以消除這個單點故障。如下圖所示。

ResourceManager HA是通過“Active/Standby”架構來實現的。一個ResourceManager處於活動狀態,一個或多個ResourceManager處於備用狀態以實現接管活動狀態下的發生的任何狀況。當Active出現狀況需要自動啓用Standby的ResourceManager時,時通過Failover-Controller(故障轉移控制器)來實現的。

官網:

http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

RM 故障轉移控制器

當不啓用自動故障轉移時,管理員必須手動將其中一個ResourceManager由Standby狀態轉換爲Active狀態。從一個ResourceManager轉移到另一個ResourceManager需要首先將Active狀態的ResourceManager轉換爲Standby狀態的ResourceManager,之後纔可將Standby狀態ResourceManager裝換爲Active狀態的 ResourceManager,這些操作都是通過“yarn rmadmin CLI”來完成。

在集羣中任意節點上啓動Zookeeper的zkfc的初始化狀態:

sudo -u hdfs zkfc -formatZK

啓動自動故障轉移功能,start-dfs.sh腳本將在任何運行NameNode的主機上自動啓動ZKFC守護進程,一旦ZKFC啓動完畢則自動選擇一個Standby NameNode最爲新的Active NameNode。若手動管理集羣中的服務,可在每臺Standby NameNode上執行命令:

sudo -u hadoop-daemon.sh start zkfc

或者手動轉換的命令:

sudo -u hdfs haadmin -transitionToActive/transitionToStandby

其中haadmin工具是用運行HDFS HA的管理客戶端工具

可以選擇嵌入基於Zookeeper的ActiveStandbyElector來決定哪個RM應該是啓動的,當RM的活動停止或無響應時,另一個RM被自動選擇爲Active RM,整個集羣的資源調配功能由新的Active RM來接管。但是,RM HA不需要像HDFS那樣運行單獨的ZKFC守護進行,因爲嵌入在RM中的ActiveStandbyElector充當故障檢測器和Leader Elector,而不是單獨的ZKFC進程。

當有多個RM時,把集羣中的所有的yarn-site.xml配置文件中添加所有的RM的主機名或IP地址。MRApplicationMaster和NodeManager嘗試以循環方式連接RM,直到它們連接Active RM,若ResourceManager停止或無響應,它們將繼續輪詢直到遇到新的Active爲止。

關於ResourceManager高可用性的yarn-site.xml文件的部分配置:

<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<!-- RM的Active/Standby的自動切換>
<property>  
<name>yarn.resourcemanager.ha.automatic-failover.recover.enabled</name>  
<value>true</value>  
 </property
<!--RM故障自動恢復-->  
<property>  
<name>yarn.resourcemanager.recovery.enabled</name>   
<value>true</value>   
</property> 
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>zysdmaster000</value>
</property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>standbymaster000,standbymaster001</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>standbymaster000</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>standbymaster001</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>standbymaster000:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>standbymaster001:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>zysdslave001:2181,zysdslave002:2181,zysdslave003:2181,zysdslave004:2181</value>
</property>

 

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