天天看點

YARN-HA配置

1 介紹

ResourceManager(RM)負責跟蹤群集中的資源,并排程應用程式(例如MapReduce作業)。在Hadoop 2.4之前,ResourceManager是YARN群集中的單點故障。高可用性功能以“活動/備用ResourceManager”對的形式添加了備援,以消除此單點故障。

2 YARN-HA工作機制

2.1 官方文檔

https://hadoop.apache.org/docs/r2.7.4/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

2.2 工作機制

YARN-HA配置

2.3 RM故障轉移 

ResourceManager HA通過Active / Standby體系結構實作-在任何時間,RM之一都處于活動狀态,并且一個或多個RM處于Standby模式,等待活動發生任何事情。啟用自動故障轉移後,轉換為活動狀态的觸發來自管理者(通過CLI)或內建的故障轉移控制器。

手動轉換和故障轉移

如果未啟用自動故障轉移,則管理者必須手動将其中一個RM轉換為Active。要從一個RM到另一個RM進行故障轉移,他們應該先将Active-RM轉換為Standby,然後将Standby-RM轉換為Active。所有這些都可以使用“ yarn rmadmin ” CLI完成。

自動故障轉移

RM可以選擇嵌入基于Zookeeper的ActiveStandbyElector,以确定哪個RM應該是Active。當Active發生故障或無響應時,另一個RM被自動選為Active,然後接管。請注意,無需像HDFS那樣運作單獨的ZKFC守護程式,因為嵌入在RM中的ActiveStandbyElector充當故障檢測器和上司選舉人,而不是單獨的ZKFC守護程序。

RM故障轉移上的用戶端,ApplicationMaster和NodeManager

當有多個RM時,預計用戶端和節點使用的配置(yarn-site.xml)會列出所有RM。用戶端,ApplicationMaster(AM)和NodeManager(NM)嘗試以循環方式連接配接到RM,直到它們到達活動RM。如果活動伺服器出現故障,他們将繼續輪詢,直到命中“新”活動伺服器為止。此預設重試邏輯實作為org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider。您可以通過實作org.apache.hadoop.yarn.client.RMFailoverProxyProvider并将yarn.client.failover-proxy-provider的值設定為類名來覆寫邏輯。

3 配置YARN-HA叢集

3.1 環境準備

(1)修改IP

(2)修改主機名及主機名和IP位址的映射

(3)關閉防火牆

(4)ssh免密登入

(5)安裝JDK,配置環境變量等

(6)配置Zookeeper叢集

3.2 叢集規劃

叢集規劃

master-node slave-node1 slave-node2

NameNode

JournalNode

DataNode

ZK

ResourceManager

NodeManager

NameNode

JournalNode

DataNode

ZK

ResourceManager

NodeManager

JournalNode

DataNode

ZK

NodeManager

3.3 配置

(1)配置yarn-site.xml

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

    <!--啟用resourcemanager ha-->
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
 
    <!--聲明兩台resourcemanager的位址-->
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>myyarncluster</value>
    </property>

    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>master-node</value>
    </property>

    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>slave-node1</value>
    </property>
 
    <!--指定zookeeper叢集的位址--> 
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>master-node:2181,slave-node1:2181,slave-node2:2181</value>
    </property>

    <!--啟用自動恢複--> 
    <property>
        <name>yarn.resourcemanager.recovery.enabled</name>
        <value>true</value>
    </property>
 
    <!--指定resourcemanager的狀态資訊存儲在zookeeper叢集--> 
    <property>
        <name>yarn.resourcemanager.store.class</name>             
     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

</configuration>
           

(2)同步更新其他節點的配置資訊(分發腳本)

3.4 啟動(hdfs,yarn)

1)啟動hdfs

HDFS-HA配置參考:https://blog.csdn.net/weixin_38023225/article/details/101346493

2)啟動yarn

(1)在master-node中執行:

[[email protected] hadoop-2.7.4]$ sbin/start-yarn.sh 
           

(2)在slave-node1中執行:

[[email protected] hadoop-2.7.4]$ sbin/yarn-daemon.sh start resourcemanager
           

(3)檢視服務狀态

[[email protected] hadoop-2.7.4]$ bin/yarn rmadmin -getServiceState rm1
active
[[email protected] hadoop-2.7.4]$ bin/yarn rmadmin -getServiceState rm2
standby
           
YARN-HA配置

繼續閱讀