1.1 hadoop1.0的單點(diǎn)問(wèn)題
Hadoop中的NameNode好比是人的心臟,非常重要桥爽,絕對(duì)不可以停止工作。在hadoop1時(shí)代钠四,只有一個(gè)NameNode。如果該NameNode數(shù)據(jù)丟失或者不能工作侣灶,那么整個(gè)集群就不能恢復(fù)了。這是hadoop1中的單點(diǎn)問(wèn)題褥影,也是hadoop1不可靠的表現(xiàn)咏雌。
1.2 hadoop2.0對(duì)hadoop1.0單點(diǎn)問(wèn)題的解決
為了解決hadoop1中的單點(diǎn)問(wèn)題,在hadoop2中新的NameNode不再是只有一個(gè)赊抖,可以有多個(gè)(目前只支持2個(gè))。每一個(gè)都有相同的職能房匆。一個(gè)是active狀態(tài)的,一個(gè)是standby狀態(tài)的浴鸿。當(dāng)集群運(yùn)行時(shí),只有active狀態(tài)的NameNode是正常工作的赚楚,standby狀態(tài)的NameNode是處于待命狀態(tài)的,時(shí)刻同步active狀態(tài)NameNode的數(shù)據(jù)左胞。一旦active狀態(tài)的NameNode不能工作举户,通過(guò)手工或者自動(dòng)切換烤宙,standby狀態(tài)的NameNode就可以轉(zhuǎn)變?yōu)閍ctive狀態(tài)的俭嘁,就可以繼續(xù)工作了。這就是高可靠拐云。
1.3 使用JournalNode實(shí)現(xiàn)NameNode(Active和Standby)數(shù)據(jù)的共享
Hadoop2.0中近她,2個(gè)NameNode的數(shù)據(jù)其實(shí)是實(shí)時(shí)共享的。新HDFS采用了一種共享機(jī)制粘捎,Quorum Journal Node(JournalNode)集群或者Nnetwork File System(NFS)進(jìn)行共享。NFS是操作系統(tǒng)層面的攒磨,JournalNode是hadoop層面的,我們這里使用JournalNode集群進(jìn)行數(shù)據(jù)共享(這也是主流的做法)灸撰。如下圖所示拼坎,便是JournalNode的架構(gòu)圖浮毯。
兩個(gè)NameNode為了數(shù)據(jù)同步,會(huì)通過(guò)一組稱作JournalNodes的獨(dú)立進(jìn)程進(jìn)行相互通信趋惨。當(dāng)active狀態(tài)的NameNode的命名空間有任何修改時(shí),會(huì)告知大部分的JournalNodes進(jìn)程讯嫂。standby狀態(tài)的NameNode有能力讀取JNs中的變更信息,并且一直監(jiān)控edit log的變化欧芽,把變化應(yīng)用于自己的命名空間。standby可以確保在集群出錯(cuò)時(shí)千扔,命名空間狀態(tài)已經(jīng)完全同步了。
1.4 NameNode之間的故障切換
對(duì)于HA集群而言厘唾,確保同一時(shí)刻只有一個(gè)NameNode處于active狀態(tài)是至關(guān)重要的龙誊。否則抚垃,兩個(gè)NameNode的數(shù)據(jù)狀態(tài)就會(huì)產(chǎn)生分歧趟大,可能丟失數(shù)據(jù),或者產(chǎn)生錯(cuò)誤的結(jié)果罕伯。為了保證這點(diǎn)惋耙,這就需要利用使用ZooKeeper了捣炬。首先HDFS集群中的兩個(gè)NameNode都在ZooKeeper中注冊(cè)绽榛,當(dāng)active狀態(tài)的NameNode出故障時(shí),ZooKeeper能檢測(cè)到這種情況推溃,它就會(huì)自動(dòng)把standby狀態(tài)的NameNode切換為active狀態(tài)届腐。
二.Hadoop(HA)集群的搭建
2.1 配置詳細(xì)
主機(jī)名 ? ? IP ? ? ? ? ? ? ? ? ? ? ? ? NameNode ? ? ? DataNode ? ? ? Year ? ?Zookeeper ? ? JournalNode
mast1 ? 192.168.177.131 ? ? 是 ? ? ? ? ? ? ? ? ? ? ?是 ? ? ? ? ? ? ? ? ? ? 否 ? ? ? ? ? ? 是 ? ? ? ? ? ? ? ? ? ? ? ?是
mast2 ? 192.168.177.132 ? ? 是 ? ? ? ? ? ? ? ? ? ? ? 是 ? ? ? ? ? ? ? ? ? ?否 ? ? ? ? ? ? 是 ? ? ? ? ? ? ? ? ? ? ? ? 是
mast3 ? ?192.168.177.133 ? ?否 ? ? ? ? ? ? ? ? ? ? ? 是 ? ? ? ? ? ? ? ? ? ?是 ? ? ? ? ? ? 是 ? ? ? ? ? ? ? ? ? ? ? ? 是