1. 程式人生 > >HDFS高可用(HA)設計

HDFS高可用(HA)設計

首先通過配置Active/Standby兩個NameNode實現叢集中對NameNode的熱備(所謂熱備就是當Active NameNode發生故障,Standby NameNode馬上接手 Activy NameNode的工作)。要實現熱備,需要滿足以下條件:

(1)Active和Standby NameNode中儲存的元資料資訊必須時刻保持一致。

通過共享編輯日誌檔案實現兩個NameNode中的元資料資訊時刻保持一致,Active往編輯日誌檔案中寫日誌,Standby從編輯日誌檔案只嗯讀取日誌。由於編輯日誌檔案的重要性,所以必須有一種方式去保證編輯日誌的可靠性,或者說是如何去判斷編輯日誌檔案是寫入成功了。

這裡通過配置多個日誌節點,通過Zookeeper對編輯日誌檔案進行管理,由於ZK管理的節點個數為奇數個(2n + 1),如果ZK監控到有n+1個節點日誌是寫入成功的,那就說明編輯日誌檔案寫入成功。

這裡寫圖片描述

(2)DateNode必須時刻向兩個NameNode同時傳送心跳報告。保證兩個NameNode都能夠時刻知道現在存活的DateNode節點。

(3)當Active NameNode發生故障,馬上進行故障轉移。
這裡通過ZK對兩個NameNode進行時刻監控,當發現Active發生故障時,馬上進行故障轉移使用Standby進行代替。

基於上面這種思想,所以必須配置一個客戶端訪問代理,由代理接收客戶端的請求,將請求轉發給存活的NameNode進行處理。

(4)配置兩個NameNode之間的隔離性,同一時刻僅僅有一個NameNode對外提供服務。

這裡寫圖片描述