hadoop的HA簡單說明
hadoop的HDFS集群的分布式存儲是靠NameNode節(jié)點(namenode負(fù)責(zé)響應(yīng)客戶端請求)來實現(xiàn)鬼雀。NameNode對應(yīng)整個hadoop來說,無非是很重要的漓拾。
在非HA集群中一旦NameNode宕機,雖然元數(shù)據(jù)不會丟失,但整個集群將無法對外提供服務(wù),導(dǎo)致HDFS服務(wù)的可靠性不高您机,這在實際應(yīng)用場景中顯然是不可行的。
但是年局,如果有2個NameNode同時響應(yīng)际看,肯定會產(chǎn)生數(shù)據(jù)混亂。也就是brain split(腦裂)某宪。所以我們一般不會采用主主模式(active/active模式)仿村,而會采用主備模式(active/standby模式)
這樣,一旦active節(jié)點宕機,standby節(jié)點立即切換到active模式趟佃。
簡單說明
我們知道奋早,NameNode主要是用來保存HDFS的元數(shù)據(jù)信息,比如命名空間信息仍律,塊信息等。當(dāng)它運行的時候,這些信息是存在內(nèi)存中的壶谒。由于NameNode的重要性,很多處理包括合并信息都會交給SecondaryNameNode去做膳沽,就算這樣汗菜,NameNode還是可能會宕機
Zookeeper作用
hadoop1.x让禀,由于只有一個NameNode。如果該NameNode數(shù)據(jù)丟失或者不能工作陨界,那么整個集群就不能恢復(fù)了巡揍。這是hadoop1.x中的單點問題。
在hadoop2.x中菌瘪,如圖
這里可以通過共享存儲腮敌,來在兩個NN間同步edits信息,會存儲在Journal Node中
具體NN的存活狀態(tài)俏扩,通過FailoverController通過Heartbeat心跳來反饋給ZooKeeper糜工,從而放置Hadoop腦裂的產(chǎn)生,并且當(dāng)active的NN倒掉后录淡,standby的NN馬上變成active狀態(tài)捌木,替代對應(yīng)的功能。
簡單測試
這里自己用的6臺機器做測試
大致如下:
ha01
ZooKeeper
NN(active)
ResourceManager(active)
ha02
ZooKeeper
NN(standby)
ha03
ZooKeeper
ResourceManager(standby)
ha04
DN
NodeManager
JournalNode
ha05
DN
NodeManager
JournalNode
ha06
DN
NodeManager
JournalNode
具體的搭建嫉戚,包括hosts钮莲,免密登錄,ZooKeeper集群及配置彼水,hadoop集群及配置崔拥,略
具體測試
我們可以在2臺NN的50070端口瀏覽器頁面,看見對應(yīng)NN的狀態(tài)凤覆,分別是active和standby的
我們手動kill掉active的NN链瓦,這個時候,可以發(fā)現(xiàn)standby的NN變成類active的盯桦。
我們再次啟動kill掉的NN慈俯,發(fā)現(xiàn)會變成standby的狀態(tài)
ResourceManager同理,不說明了