Namenode在HDFS中是一個非常重要的組件,相當(dāng)于hadoop集群系統(tǒng)的心臟,在顯示分布式集群環(huán)境中,還是會有可能出現(xiàn)Namenode的崩潰或各種意外。所以,高可用模式就體現(xiàn)出作用了。通過多引入一個NN的,可以保證當(dāng)一個NN宕機(jī)時,也可以保證集群服務(wù)的正常。
但是兩個NN將會產(chǎn)生數(shù)據(jù)不一致等問題:
1、能否讓兩個NN都正常響應(yīng)客戶端的請求?
應(yīng)該讓兩個NN節(jié)點在某個時間只能有一個節(jié)點正常響應(yīng)客戶端的請求,響應(yīng)請求的必須為active狀態(tài)的的NN。
2、standby狀態(tài)的節(jié)點必須能夠快速無縫的切換為active狀態(tài)
意味著兩個NN必須時刻的保持元數(shù)據(jù)的一致性
3、文件數(shù)據(jù)的寫入首先寫入namenode的edits文件中,因此如果將edits放置到qjournal中管理。因為qjournal是一個分布式的集群,這樣可以確保edits不會因為單個客戶端宕機(jī)而丟失。qjournal 依賴于 zookeeper實現(xiàn)

