HDFS學習筆記2 -- 關於Secondary NameNode, Checkpoint Node, Backup Node和High Availability (HA)

  上篇介紹提到,NameNode主要經過EditLog和FsImage兩個文件來維護整個集羣的namespace。在NameNode啓動時,合併兩個文件並更新FsImage,並將EditLog清空,啓動後只須要實時更新EditLog文件。若是集羣龐大且操做十分密集的話,會使EditLog很是肥大,從而致使下次啓動時合併兩個文件須要花上很長時間。
  對於上術問題,HDFS經過有下面幾種方式解決。node

Secondary NameNode
經過在另一臺機器上配置Secondary NameNode,週期性地合併FsImage和EditLog來控制EditLog的大小。主要有兩個參數配置參數:
・dfs.namenode.checkpoint.period 默認每一個一小時創建一個檢查點
・dfs.namenode.checkpoint.txns 默認每100萬條記錄強制創建一個檢查點oop

Checkpoint Node
配置Checkpoint Node和Secondary NameNode相似,是後者的替代方式,不一樣之處在於它週期性地將NameNode的FsImage和EditLog下載到本地合併,而後把合併的結果上傳回namenode。一個NameNode能夠同時配置多個Checkpoint Node。spa

Backup Node
Backup Node一樣能夠提供上述Checkpoint的功能,同事維持一份和NameNode同步的內存映射。即其接收NameNode的EditLog,同時還將其內容更新至本身的內存,至關於作了一個namespace的備份。
Backup Node由於是時刻與NameNode同步的,因此它不須要從NameNode下載FsImage和EditLog,只須要按期地把本機上的FsImage和EditLog保存便可。
對於每一個NameNode,目前只容許配置一個Backup Node。並且利用Backup node模式就不容許登陸CheckPoint Node了。進程

HDFS High Availability
在Hadoop2.0以前,每一個集羣只能有一個NameNode,若是它出現問題會致使整個集羣癱瘓掉。所以NameNode須要有必定的冗餘,一般配置成Active/Standby,在Active失效的時候能立刻無縫切換至standby機上。現階段Active/Standby直接的同步有兩種方式:
JournalNodes(JNs)伺服方式:ActiveNode持續地將EditLog寫入到JournalNode伺服進程,而StandbyNode則可以實時監視並從中讀取相關內容進行同步。JournalNodes只容許一個NameNode進行寫入操做,若是Active失效,Standby將自動得到寫入權。
shared NFS directory方式:經過掛接一個二者都擁有讀寫權限的共享文件夾的方式進行同步。Active一方不斷將EditLog寫入該文件夾,而Standby則監視該文件同時同步到本身的namesapce中。內存

相關文章
相關標籤/搜索