hadoop-2.7.4-翻譯文件-resourcemanager高可用
ResourceManager高可用性
介紹
本指南概述了YARN的ResourceManager的高可用性,並詳細介紹瞭如何配置和使用此功能。ResourceManager(RM)負責跟蹤群集中的資源,並排程應用程式(例如MapReduce作業)。在Hadoop 2.4之前,ResourceManager在YARN叢集中存在單點故障。高可用性功能以active/standby rm pair的形式新增冗餘,以消除此單一故障點。
結構
RM故障轉移
ResourceManager HA通過active/standby架構實現 - 在任何時間點,其中一個RM是活動的,一個或多個RM處於待機模式,等待接管活動。
手動轉換和故障切換
當未啟用自動故障切換時,管理員必須手動將其中一個RM轉換為active狀態。想要從一個RM故障轉移到另一個,預計首先將Active-RM轉換為standby,並將Standby-RM轉換為活動。所有這一切可以使用“ yarn raadmin ”CLI完成。
自動故障切換
RM可以選擇嵌入基於Zookeeper的ActiveStandbyElector來決定哪個RM應該是活動的。當active rm 掛掉或變得無響應時,另一個RM自動被選為active,然後接管任務。
客戶端,ApplicationMaster和NodeManager在RM故障切換
當有多個RM時,客戶端和節點使用的配置[yarn-site.xml]來獲取所有的RM節點。客戶端,應用程式主機(AM)和節點管理器(NM)嘗試以迴圈方式連線到RM,直到它們連線到Active RM。如果active rm掛掉了,他們將繼續迴圈輪詢,直到他們找到新的active rm。此預設重試邏輯實現為
恢復到之前活躍的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。