1. 程式人生 > >hadoop-2.X HA的基本原理

hadoop-2.X HA的基本原理

1 概述 

在hadoop2.0之前,namenode只有一個,存在單點問題(雖然hadoop1.0有secondarynamenode,checkpointnode,buckcupnode這些,但是單點問題依然存在),在hadoop2.0引入了HA機制。hadoop2.0的HA機制官方介紹了有2種方式,一種是NFS(Network File System)方式,另外一種是QJM(Quorum Journal Manager)方式。


2 基本原理 

hadoop2.0的HA 機制有兩個namenode,一個是active namenode,狀態是active;另外一個是standby namenode,狀態是standby。兩者的狀態是可以切換的,但不能同時兩個都是active狀態,最多隻有1個是active狀態。只有active namenode提供對外的服務,standby namenode是不對外服務的。active namenode和standby namenode之間通過NFS或者JN(journalnode,QJM方式)來同步資料。


active namenode會把最近的操作記錄寫到本地的一個edits檔案中(edits file),並傳輸到NFS或者JN中。standby namenode定期的檢查,從NFS或者JN把最近的edit檔案讀過來,然後把edits檔案和fsimage檔案合併成一個新的fsimage,合併完成之後會通知active namenode獲取這個新fsimage。active namenode獲得這個新的fsimage檔案之後,替換原來舊的fsimage檔案。

這樣,保持了active namenode和standby namenode的資料的實時同步,standby namenode可以隨時切換成active namenode(譬如active namenode掛了)。而且還有一個原來hadoop1.0的secondarynamenode,checkpointnode,buckcupnode的功能:合併edits檔案和fsimage檔案,使fsimage檔案一直保持更新。所以啟動了hadoop2.0的HA機制之後,secondarynamenode,checkpointnode,buckcupnode這些都不需要了。


3 NFS方式 

NFS作為active namenode和standby namenode之間資料共享的儲存。active namenode會把最近的edits檔案寫到NFS,而standby namenode從NFS中把資料讀過來。這個方式的缺點是,如果active namenode或者standby namenode有一個和NFS之間網路有問題,則會造成他們之前資料的同步出問題。

Hadoop2.0的HA介紹


4 QJM(Quorum Journal Manager )方式 

QJM的方式可以解決上述NFS容錯機制不足的問題。active namenode和standby namenode之間是通過一組journalnode(數量是奇數,可以是3,5,7...,2n+1)來共享資料。active namenode把最近的edits檔案寫到2n+1個journalnode上,只要有n+1個寫入成功就認為這次寫入操作成功了,然後standby namenode就可以從journalnode上讀取了。可以看到,QJM方式有容錯的機制,可以容忍n個journalnode的失敗。

Hadoop2.0的HA介紹

5 主備節點的切換

active namenode和standby namenode可以隨時切換。當active namenode掛掉後,也可以把standby namenode切換成active狀態,成為active namenode。可以人工切換和自動切換。人工切換是通過執行HA管理的命令來改變namenode的狀態,從standby到active,或者從active到standby。自動切換則在active namenode掛掉的時候,standby namenode自動切換成active狀態,取代原來的active namenode成為新的active namenode,HDFS繼續正常工作。


主備節點的自動切換需要配置zookeeper。active namenode和standby namenode把他們的狀態實時記錄到zookeeper中,zookeeper監視他們的狀態變化。當zookeeper發現active namenode掛掉後,會自動把standby namenode切換成active namenode。

Hadoop2.0的HA介紹

6 實戰tips 

  • QJM方式有明顯的優點,一是本身就有fencing的功能,二是通過多個journal節點增強了系統的健壯性,所以建議在生成環境中採用QJM的方式。
  • journalnode消耗的資源很少,不需要額外的機器專門來啟動journalnode,可以從hadoop叢集中選幾臺機器同時作為journalnode。