Hadoop2.0的HA介紹
時間 2014-05-03 17:42:25 Linux公社
原文 http://www.linuxidc.com/Linux/2014-05/101174.htm
前一篇文章介紹了Hadoop2.0(hadoop2.0架構,具體版本是hadoop2.2.0)的安裝和最基本的配置(見 http://www.linuxidc.com/Linux/2014-05/101173.htm ),並沒有配置HA(HighAvalability,高可用性),接下來的文章中會介紹hadoop2.0HA的配置。在介紹hadoop2.0的HA配置之前,本文先介紹hadoop2.0HA的基本原理和2種方式。
1 概述
在hadoop2.0之前,namenode只有一個,存在單點問題(雖然hadoop1.0有secondarynamenode,checkpointnode,buckcupnode這些,但是單點問題依然存在),在hadoop2.0引入了HA機制。hadoop2.0的HA機制官方介紹了有2種方式,一種是NFS(Network File System)方式,另外一種是QJM(QuorumJournal Manager)方式。
2 基本原理
hadoop2.0的HA 機制有兩個namenode,一個是active namenode,狀態是active;另外一個是standbynamenode,狀態是standby。兩者的狀態是可以切換的,但不能同時兩個都是active狀態,最多隻有1個是active狀態。只有activenamenode提供對外的服務,standbynamenode是不對外服務的。activenamenode和standbynamenode之間通過NFS或者JN(journalnode,QJM方式)來同步數據。
active namenode會把最近的操作記錄寫到本地的一個edits文件中(editsfile),並傳輸到NFS或者JN中。standbynamenode定期的檢查,從NFS或者JN把最近的edit文件讀過來,然後把edits文件和fsimage文件合併成一個新的fsimage,合併完成之後會通知active namenode獲取這個新fsimage。activenamenode獲得這個新的fsimage文件之後,替換原來舊的fsimage文件。
這樣,保持了activenamenode和standbynamenode的數據的實時同步,standbynamenode可以隨時切換成activenamenode(譬如activenamenode掛了)。而且還有一個原來hadoop1.0的secondarynamenode,checkpointnode,buckcupnode的功能:合併edits文件和fsimage文件,使fsimage文件一直保持更新。所以啓動了hadoop2.0的HA機制之後,secondarynamenode,checkpointnode,buckcupnode這些都不需要了。
3 NFS方式
NFS作爲active namenode和standbynamenode之間數據共享的存儲。activenamenode會把最近的edits文件寫到NFS,而standbynamenode從NFS中把數據讀過來。這個方式的缺點是,如果active namenode或者standbynamenode有一個和NFS之間網絡有問題,則會造成他們之前數據的同步出問題。
4 QJM(Quorum Journal Manager )方式
QJM的方式可以解決上述NFS容錯機制不足的問題。active namenode和standbynamenode之間是通過一組journalnode(數量是奇數,可以是3,5,7...,2n+1)來共享數據。activenamenode把最近的edits文件寫到2n+1個journalnode上,只要有n+1個寫入成功就認爲這次寫入操作成功了,然後standby namenode就可以從journalnode上讀取了。可以看到,QJM方式有容錯的機制,可以容忍n個journalnode的失敗。
5 主備節點的切換
active namenode和standby namenode可以隨時切換。當active namenode掛掉後,也可以把standby namenode切換成active狀態,成爲activenamenode。可以人工切換和自動切換。人工切換是通過執行HA管理的命令來改變namenode的狀態,從standby到active,或者從active到standby。自動切換則在activenamenode掛掉的時候,standbynamenode自動切換成active狀態,取代原來的active namenode成爲新的active namenode,HDFS繼續正常工作。
主備節點的自動切換需要配置zookeeper。active namenode和standbynamenode把他們的狀態實時記錄到zookeeper中,zookeeper監視他們的狀態變化。當zookeeper發現activenamenode掛掉後,會自動把standbynamenode切換成activenamenode。
6 實戰tips
QJM方式有明顯的優點,一是本身就有fencing的功能,二是通過多個journal節點增強了系統的健壯性,所以建議在生成環境中採用QJM的方式。 journalnode消耗的資源很少,不需要額外的機器專門來啓動journalnode,可以從hadoop集羣中選幾臺機器同時作爲journalnode。介紹完hadoop2.0的HA的基本原理之後,後面的文章會分別詳細介紹這兩種方式的配置和原理。