Zookeeper解決Hadoop單點問題

yanke_shanghai發表於2016-06-06
Yarn主要由四部分組成
ResourceManage(RM) NodeManage(NM) ApplicationMaster(AM) Container

Yarn單點故障
YARN的單點故障指的是ResourceManager單點問題,ResourceManager負責整個系統的資源管理和排程,內部維護了各個應用程式的ApplictionMaster資訊,NodeManager資訊,資源使用資訊等。考慮到這些資訊絕大多數可以動態重構,因此解決YARN單點故障要比HDFS單點容易很多。與HDFS類似,YARN的單點故障仍採用主備切換的方式完成,不同的是,備節點不會同步主節點的資訊,而是在切換之後,才從共享儲存系統讀取所需資訊。之所以這樣,是因為YARN ResourceManager內部儲存的資訊非常少,大部分可以重構,且這些資訊是動態變化的,很快會變舊。
ResourceManager的工作狀況直接決定了整個YARN框架是否正常運轉。

ResourceManager HA

Yarn在執行期間,會有多個ResourceManager,但只有一個ResourceManager處於active狀態,另外一些則處在standby狀態,當Active節點無法正常工作,比如機器掛掉或重啟,其餘standby狀態的節點會透過競爭選舉產生新的master節點。
在Hadoop HA中,主要由以下幾個元件構成:
(1)MasterHADaemon:與Master服務執行在同一個程式中,可接收外部RPC命令,以控制Master服務的啟動和停止;
(2)SharedStorage:共享儲存系統,active master將資訊寫入共享儲存系統,而standby master則讀取該資訊以保持與active master的同步,從而減少切換時間。常用的共享儲存系統有zookeeper(被YARN HA採用)、NFS(被HDFS HA採用)、HDFS(被MapReduce HA採用)和類bookeeper系統(被HDFS HA採用)。
(3)ZKFailoverController:基於Zookeeper實現的切換控制器,主要由兩個核心元件構成:ActiveStandbyElector和HealthMonitor,其中,ActiveStandbyElector負責與zookeeper叢集互動,透過嘗試獲取全域性鎖,以判斷所管理的master進入active還是standby狀態;HealthMonitor負責監控各個活動master的狀態,以根據它們狀態進行狀態切換。。
(4)Zookeeper叢集:核心功能透過維護一把全域性鎖控制整個叢集有且僅有一個active master。當然,如果ShardStorge採用了zookeeper,則還會記錄一些其他狀態和執行時資訊。

腦裂
腦裂是指在主備切換時,由於切換不徹底或其他原因,導致客戶端和Slave誤以為出現兩個active master,最終使得整個叢集處於混亂狀態。解決腦裂問題,通常採用隔離(Fencing)機制,包括三個方面:
共享儲存fencing:確保只有一個Master往共享儲存中寫資料。
客戶端fencing:確保只有一個Master可以響應客戶端的請求。
Slave fencing:確保只有一個Master可以向Slave下發命令。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30316686/viewspace-2114787/,如需轉載,請註明出處,否則將追究法律責任。

相關文章