全部產品
Search
文件中心

E-MapReduce:YARN高可用特性使用指南

更新時間:Jul 01, 2024

本文介紹YARN高可用特性以及相關配置項。

基本介紹

Hadoop YARN是基於Master與Slave主從架構的分布式叢集資源管理系統,其中RM (ResourceManager) 是Master組件,負責整個叢集的資源管理與任務調度,NM (NodeManager) 是Slave組件,負責單個節點的任務管理與監控。

YARN高可用特性主要包括以下三個方面:

  • RM HA(ResourceManager High Availability)能夠支援在不同節點上啟動多個ResourceManager進程,可以避免單點故障。更多內容,請參見ResourceManager High Availability

  • RM有狀態重啟(ResourceManager Restart)能夠持續將應用資訊與目前狀態即時同步至Zookeeper分布式儲存中,並在啟動時重新載入應用狀態,保證叢集升級或重啟後應用可以自動回復。更多內容,請參見ResourceManager Restart

  • NM有狀態重啟(NodeManager Restart)能持續將運行時的任務(Container)資訊與狀態同步至LevelDB等本機存放區中,並在啟動時重新載入任務狀態,保證運行中任務在節點升級或重啟時不受影響。更多內容,請參見NodeManager Restart

基於以上特性,在通常情況下,對於RM單點故障、RM升級或重啟、NM升級或重啟等常見情境,可以做到應用無感知,任務運行時不受任何影響。

依賴服務

YARN高可用特性依賴ZooKeeper服務實現分布式選舉與應用資訊和狀態中繼資料的儲存,保證叢集的強一致性。依賴的ZooKeeper服務配置項如下表。

配置集

配置項

(推薦)配置值

說明

core-site.xml

hadoop.zk.address

<zk1-host>:<zk1-port>,<zk2-host>:<zk2-port>,<zk3-host>:<zk3-port>

ZooKeeper服務地址,用於儲存leader-election、應用資訊與狀態等,多個使用英文半形逗號(,)分隔。

特性說明

RM HA

RM HA工作原理是在不同節點上啟動多個RM進程,通過Leader選舉決定有且只有1個Active RM,並由Active RM記錄應用的基本資料與狀態,寫入Zookeeper儲存中。如果Active RM進程或其所在節點存在問題,Standby RM能夠基於Zookeeper的分布式鎖機制選舉出1個Active RM,新的Active RM將從Zookeeper儲存中恢複出全部應用的資訊與狀態,繼續提供資源管理與調度服務,從而避免單點故障。1

RM HA相關的重要配置項如下表。

配置集

配置項

(推薦)配置值

說明

yarn-site.xml

yarn.resourcemanager.ha.enabled

true

是否開啟HA特性,預設值false。

yarn.resourcemanager.ha.automatic-failover.enabled

true或者不配置

是否啟用自動切換,預設值true。

yarn.resourcemanager.ha.automatic-failover.embedded

true或者不配置

是否使用嵌入的自動切換方式,預設值true。

yarn.resourcemanager.ha.curator-leader-elector.enabled

true

是否使用非Curator組件,預設值false。

yarn.resourcemanager.ha.automatic-failover.zk-base-path

不配置

Zookeeper的leader-elector根目錄,預設值/yarn-leader-election

yarn.resourcemanager.ha.rm-ids

rm1,rm2,rm3

多個RM的ID列表,使用英文半形逗號(,)分隔。

yarn.resourcemanager.cluster-id

<cluster-id>

叢集ID,Zookeeper儲存路徑中依賴。

yarn.resourcemanager.hostname.<rm-id>

不配置

hostname(RM執行個體級配置,有多個RM執行個體)。

yarn.resourcemanager.address.<rm-id>

不配置

Client提交作業的RPC地址(RM執行個體級配置,有多個RM執行個體)。

yarn.resourcemanager.scheduler.address.<rm-id>

不配置

ApplicationMasters申請資源的RPC地址(RM執行個體級配置,有多個RM執行個體)。

yarn.resourcemanager.resource-tracker.address.<rm-id>

不配置

NodeManagers彙報資源與任務狀態的RPC地址(RM執行個體級配置,有多個RM執行個體)。

yarn.resourcemanager.admin.address.<rm-id>

不配置

Admin命令提交的RPC地址(RM執行個體級配置,有多個RM執行個體)。

yarn.resourcemanager.webapp.address.<rm-id>

不配置

HTTP訪問地址(RM執行個體級配置,有多個RM執行個體)。

yarn.resourcemanager.webapp.https.address.<rm-id>

不配置

HTTPS訪問地址,僅當yarn.http.policy= HTTPS_ONLY時可用(RM執行個體級配置,有多個RM執行個體)。

RM有狀態重啟

RM有狀態重啟包含兩種模式:

  • 非工作保持(Non-work-preserving):RM重啟後根據恢複的應用資訊與狀態,重新提交所有的運行中應用。對應用影響較大,所有運行中的應用都會被停止然後重新提交運行。

  • 工作保持(Work-preserving):RM重啟後根據恢複的應用資訊與狀態,自動接管當前所有運行中的應用,盡量避免運行中應用受影響。

RM HA的工作保持模式的重要配置如下表。

配置集

配置項

(推薦)配置值

說明

yarn-site.xml

yarn.resourcemanager.recovery.enabled

true

是否啟用RM有狀態重啟特性,預設值false。

yarn.resourcemanager.work-preserving-recovery.enabled

true或者不配置

是否啟用工作保持模式,預設值true。

yarn.resourcemanager.store.class

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

RM狀態儲存類,只有Zookeeper儲存支援RM HA。

yarn.resourcemanager.zk-state-store.parent-path

不配置

RM維護的應用資訊與狀態在Zookeeper中的儲存路徑,預設/rmstore

NM有狀態重啟

NM有狀態重啟能夠在NM短時間內重啟恢複後,保證節點上啟動並執行任務(Container)繼續運行,無需停止並重新調度,從而滿足應用無感知的基本要求。

NM有狀態重啟的重要配置項如下表。

配置集

配置項

(推薦)配置值

說明

yarn-site.xml

yarn.nodemanager.recovery.enabled

true

是否啟用NM有狀態重啟特性,預設值false

yarn.nodemanager.recovery.dir

/home/hadoop/yarn-nm-recovery

儲存任務資訊與狀態資料的本地目錄,預設值為 ${hadoop.tmp.dir}/yarn-nm-recovery

建議將該目錄存放在系統硬碟非/tmp目錄下,並且確保hadoop使用者有讀寫權限(推薦使用/home/hadoop/yarn-nm-recovery),避免/tmp目錄資料丟失和資料盤壞盤處理影響NM服務。

yarn.nodemanager.recovery.supervised

true

是否在NM退出時保留本機資料以便能在重啟後恢複,預設值false。

yarn.nodemanager.address

${yarn.nodemanager.hostname}:8041

0.0.0.0:8041

NM RPC地址,也用作NM ID。

  • 如果port不為0,則表示已設定為固定連接埠,無需修改該配置值。

  • 如果port為0(使用隨機連接埠),NM重啟後NM ID變化,導致NM有狀態重啟無效。因此,必須使用固定連接埠。