1. 程式人生 > >hadoop-2.7.4-翻譯文件-resourcemanager高可用

hadoop-2.7.4-翻譯文件-resourcemanager高可用

ResourceManager高可用性

介紹

本指南概述了YARN的ResourceManager的高可用性,並詳細介紹瞭如何配置和使用此功能。ResourceManager(RM)負責跟蹤群集中的資源,並排程應用程式(例如MapReduce作業)。在Hadoop 2.4之前,ResourceManager在YARN叢集中存在單點故障。高可用性功能以active/standby rm pair的形式新增冗餘,以消除此單一故障點。

結構

ResourceManager高可用性概述

RM故障轉移

ResourceManager HA通過active/standby架構實現 - 在任何時間點,其中一個RM是活動的,一個或多個RM處於待機模式,等待接管活動。

在啟用自動故障切換時,轉換為活動的觸發器來自管理員(通過CLI)或整合故障切換控制器。

手動轉換和故障切換

當未啟用自動故障切換時,管理員必須手動將其中一個RM轉換為active狀態。想要從一個RM故障轉移到另一個,預計首先將Active-RM轉換為standby,並將Standby-RM轉換為活動。所有這一切可以使用“ yarn raadmin ”CLI完成。

自動故障切換

RM可以選擇嵌入基於Zookeeper的ActiveStandbyElector來決定哪個RM應該是活動的。當active rm 掛掉或變得無響應時,另一個RM自動被選為active,然後接管任務。

請注意,不需要像HDFS那樣執行單獨的ZKFC守護程式,因為嵌入在RM中的ActiveStandbyElector可以作為故障檢測器和進行 leader選舉 而不是使用單獨的ZKFC程序。

客戶端,ApplicationMaster和NodeManager在RM故障切換

當有多個RM時,客戶端和節點使用的配置[yarn-site.xml]來獲取所有的RM節點。客戶端,應用程式主機(AM)和節點管理器(NM)嘗試以迴圈方式連線到RM,直到它們連線到Active RM。如果active rm掛掉了,他們將繼續迴圈輪詢,直到他們找到新的active rm。此預設重試邏輯實現為

org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider您可以通過實現org.apache.hadoop.yarn.client.RMFailoverProxyProvider介面來覆蓋這個邏輯實現,並將yarn.client.failover-proxy-provider的值設定為類名。

恢復到之前活躍的RM的狀態

隨著ResourceManger重新啟用,該RM被推選為活動狀態並載入RM內部狀態檔案,並儘可能多得繼承之前下線的rm的工作。為先前提交給RM的每個託管應用程式都會產生一個新的嘗試。應用程式可以定期檢查,以避免丟失任何作業。狀態儲存必須對兩個Active / Standby RM都可見。目前,有兩個用於持久化的RMStateStore實現 - FileSystemRMStateStore和ZKRMStateStore。ZKRMStateStore隱式允許在任何時間點對單個RM的寫入訪問,因此是在HA叢集中使用的推薦儲存當使用ZKRMStateStore時,不需要單獨的隔離機制來解決多個RM可能存在的腦裂情況。使用ZKRMStateStore時,建議不要在Zookeeper群集上設定“ zookeeper.DigestAuthenticationProvider.superDigest ”屬性,以確保zookeeper管理員無法訪問YARN或使用者的憑據資訊。

部署

配置

大多數故障切換功能都可以使用各種配置屬性進行調整。以下是所需/重要的列表。[yarn-default.xml]帶有一個完整的配置列表。有關預設值的更多資訊,請參閱yarn-default.xml有關設定狀態儲存的說明,請參閱ResourceManger重新啟動的文件

配置屬性 描述
yarn.resourcemanager.zk-address ZK-Quorum的地址。用於狀態儲存和嵌入式領導推選。
yarn.resourcemanager.ha.enabled 啟用RM HA。
yarn.resourcemanager.ha.rm-IDS RM的邏輯ID列表。例如,“rm1,rm2”。
yarn.resourcemanager.hostname.rm-ids 對於每個rm-id,指定RM對應的主機名。或者,可以設定每個RM的服務地址。
yarn.resourcemanager.address.rm-id 對於每個rm-id,指定客戶端提交作業的主機:埠。如果設定,則覆蓋在yarn.resourcemanager.hostname.rm-id中設定的主機名。
yarn.resourcemanager.scheduler.address.rm-id 對於每個rm-id,為ApplicationMaster指定排程程式host:port以獲取資源。如果設定,則覆蓋在yarn.resourcemanager.hostname.rm-id中設定的主機名。
yarn.resourcemanager.resource-tracker.address.rm-id 對於每個rm-id,請指定NodeManager連線的host:埠。如果設定,則覆蓋在yarn.resourcemanager.hostname.rm-id中設定的主機名。
yarn.resourcemanager.admin.address.rm-id 對於每個rm-id,為管理命令指定host:port。如果設定,則覆蓋在yarn.resourcemanager.hostname.rm-id中設定的主機名。
yarn.resourcemanager.webapp.address.rm-id 對於每個rm-id,指定RM Web應用程式的host:port。如果將yarn.http.policy設定為HTTPS_ONLY則不需要此操作如果設定,則覆蓋在yarn.resourcemanager.hostname.rm-id中設定的主機名。
yarn.resourcemanager.webapp.https.address.rm-id 對於每個rm-id,指定RM https Web應用程式對應的host:埠。如果將yarn.http.policy設定為HTTP_ONLY則不需要此操作如果設定,則覆蓋在yarn.resourcemanager.hostname.rm-id中設定的主機名。
yarn.resourcemanager.ha.id 在叢集中設定RM的識別符號。這是可選的,但是,如果設定,管理員必須確保所有RM在配置中都有自己的ID。
yarn.resourcemanager.ha.automatic-failover.enabled 啟用自動故障轉移; 預設情況下,僅當HA被啟用時才啟用。
yarn.resourcemanager.ha.automatic-failover.embedded 啟用自動故障轉移時,使用嵌入式leader-elector選擇Active RM。預設情況下,僅當HA被啟用時才啟用。
yarn.resourcemanager.cluster-id 標識叢集。由推選使用,以確保RM不會接管另外一個群集的活動。
yarn.client.failover-proxy-provider 被客戶端,AM和NM使用的類,以便將故障切換到Active RM。
yarn.client.failover-max-attempts FailoverProxyProvider應該嘗試故障轉移的最大次數。
yarn.client.failover-sleep-base-ms 用於計算故障轉移指數延遲的睡眠基準(以毫秒為單位)。
yarn.client.failover-sleep-max-ms 故障轉移之間的最長睡眠時間(以毫秒為單位)。
yarn.client.failover-retries 嘗試連線到ResourceManager的重試次數。
yarn.client.failoverr-retries-on-socket-timeouts 每次嘗試使用套接字連線到RM時超時重試的次數。

示例配置

以下是RM故障切換的最小設定示例。

<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.webapp.address.rm1</name>
  <value>master1:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>master2:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

管理員命令

yarn rmadmin具有幾個HA特定的命令選項,用於檢查RM的執行狀況和狀態,或進行RM的狀態轉換。HA的命令將使用services.resourcemanager.ha.rm-ids設定的rm表示作為引數

 $ yarn rmadmin -getServiceState rm1
 active

 $ yarn rmadmin -getServiceState rm2
 standby

如果啟用自動故障切換,則無法使用手動轉換命令。雖然可以通過強制手動標記來操作,但您需要謹慎小心。

 $ yarn rmadmin -transitionToStandby rm1
 Automatic failover is enabled for [email protected]
 Refusing to manually manage HA state, since it may cause
 a split-brain scenario or other incorrect state.
 If you are very sure you know what you are doing, please
 specify the forcemanual flag.

     
//[email protected]的自動故障轉移已啟用。
//手動轉換HA RM狀態的結果,有可能導致腦裂或者其他故障。
//如果你非常確定你知道自己在做什麼的話,請使用 forcemanual 引數。

有關詳細資訊,請參閱YarnCommands

ResourceManager Web UI服務

假設standby rm啟動並正在執行,則其會自動將所有Web請求重定向到active rm,除了“about”頁面。

網頁服務

假設standby rm啟動並正在執行,在standby rm上呼叫ResourceManager REST API時呈現的RM Web服務將自動重定向到Active RM。