hadoop2中ResourceManager的HA


    大家都知道在hadoop2中對HDFS的改進很大,實現了NameNode的HA;也增加了ResourceManager。但是ResourceManager也可以實現HA。你沒看錯,確實是ResourceManager的HA。注意是在Apache Hadoop 2.4.1版本中開始加入的,可不是任意一個版本。

    我們不講單點問題的危害,直接講如何配置ResourceManager的HA。

    HA的架構

Overview of ResourceManager High Availability

    如果大家理解HDFS的HA,那么ResourceManager的HA與之是相同道理的:也是Active/Standby架構,任意時刻,都一個是Active,其余處於Standby狀態的ResourceManager可以隨時轉換成Active狀態。狀態轉換可以手工完成,也可以自動完成。手工完成時通過命令行的管理命令(命令是“yarn rmadmin”)。自動完成是通過配置自動故障轉移(automatic-failover),使用集成的failover-controller完成狀態的自動切換。

    自動故障轉移是依賴於ZooKeeper集群,依賴ZooKeeper的ActiveStandbyElector會嵌入到ResourceManager中,當Active狀態的ResourceManager失效時,處於 Standby狀態的ResourceManager就會被選舉為Active狀態的,實現切換。注意:這里沒有ZooKeeperFailoverController進程,這點和HDFS的HA不同。

    對於客戶端而言,必須知道所有的ResourceManager中。因此,需要在yarn-site.xml中配置所有的ResourceManager。那么,當一個Active狀態的ResourceManager失效時,客戶端怎么辦哪?客戶端會采用輪詢機制,輪詢配置在yarn-site.xml中的ResourceManager,直到找到一個active狀態的ResourceManager。如果我們想修改這種尋找ResourceManager的機制,可以繼承類org.apache.hadoop.yarn.client.RMFailoverProxyProvider,實現自己的邏輯。然后把類的名字配置到yarn-site.xml的配置項yarn.client.failover-proxy-provider中。

    配置

    在yarn-site.xml中配置如下

 <property>
   <name>yarn.resourcemanager.ha.enabled</name>
   <value>true</value>
 </property>
 <property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm1</name>
   <value>master1</value>
 </property>
 <property>
   <name>yarn.resourcemanager.hostname.rm2</name>
   <value>master2</value>
 </property>
 <property>
   <name>yarn.resourcemanager.zk-address</name>
   <value>zk1:2181,zk2:2181,zk3:2181</value>
 </property>

    命令

    查看狀態的命令

    yarn rmadmin –getServiceState rm1

    狀態切換的命令

    yarn rmadmin –transitionToStandby rm1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM