[轉載]JournalNode的作用

NameNode之間共享數據(NFS 、Quorum Journal Node(用得多))

兩個NameNode爲了數據同步,會通過一組稱作JournalNodes的獨立進程進行相互通信。當active狀態的NameNode的命名空間有任何修改時,會告知大部分的JournalNodes進程。standby狀態的NameNode有能力讀取JNs中的變更信息,並且一直監控edit log的變化,把變化應用於自己的命名空間。standby可以確保在集羣出錯時,命名空間狀態已經完全同步了。

上面在Active Namenode與StandBy Namenode之間的綠色區域就是JournalNode,當然數量不一定只有1個,作用相當於NFS共享文件系統.Active Namenode往裏寫editlog數據,StandBy再從裏面讀取數據進行同步.

 

 NameNode之間共享數據(NFS 、Quorum Journal Node(用得多))

兩個NameNode爲了數據同步,會通過一組稱作JournalNodes的獨立進程進行相互通信。當active狀態的NameNode的命名空間有任何修改時,會告知大部分的JournalNodes進程。standby狀態的NameNode有能力讀取JNs中的變更信息,並且一直監控edit log的變化,把變化應用於自己的命名空間。standby可以確保在集羣出錯時,命名空間狀態已經完全同步了。

 Hadoop中的NameNode好比是人的心臟,非常重要,絕對不可以停止工作

 

hadoop2.2.0(HA)中HDFS的高可靠指的是可以同時啓動2個NameNode。其中一個處於工作狀態,另一個處於隨時待命狀態。這樣,當一個NameNode所在的服務器宕機時,可以在數據不丟失的情況下,手工或者自動切換到另一個NameNode提供服務。 

這些NameNode之間通過共享數據,保證數據的狀態一致。多個NameNode之間共享數據,可以通過Nnetwork File System或者Quorum Journal Node。前者是通過linux共享的文件系統,屬於操作系統的配置;後者是hadoop自身的東西,屬於軟件的配置。

我們這裏講述使用Quorum Journal Node的配置方式,方式是手工切換。 

集羣啓動時,可以同時啓動2個NameNode。這些NameNode只有一個是active的,另一個屬於standby狀態。active狀態意味着提供服務,standby狀態意味着處於休眠狀態,只進行數據同步,時刻準備着提供服務,如圖2所示。

image

圖2 

架構 

在一個典型的HA集羣中,每個NameNode是一臺獨立的服務器。在任一時刻,只有一個NameNode處於active狀態,另一個處於standby狀態。其中,active狀態的NameNode負責所有的客戶端操作,standby狀態的NameNode處於從屬地位,維護着數據狀態,隨時準備切換。 

兩個NameNode爲了數據同步,會通過一組稱作JournalNodes的獨立進程進行相互通信。當active狀態的NameNode的命名空間有任何修改時,會告知大部分的JournalNodes進程。standby狀態的NameNode有能力讀取JNs中的變更信息,並且一直監控edit log的變化,把變化應用於自己的命名空間。standby可以確保在集羣出錯時,命名空間狀態已經完全同步了,如圖3所示。

image

圖3 

爲了確保快速切換,standby狀態的NameNode有必要知道集羣中所有數據塊的位置。爲了做到這點,所有的datanodes必須配置兩個NameNode的地址,發送數據塊位置信息和心跳給他們兩個。 

對於HA集羣而言,確保同一時刻只有一個NameNode處於active狀態是至關重要的。否則,兩個NameNode的數據狀態就會產生分歧,可能丟失數據,或者產生錯誤的結果。爲了保證這點,JNs必須確保同一時刻只有一個NameNode可以向自己寫數據。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章