secondarynameNode如何輔助管理FSImage與Edits文件

由於editlog記錄了集羣運行期間所有對HDFS的相關操作,所以這個文件會很大。
集羣關閉後再次啓動時會將Fsimage,editlog加載到內存中,進行合併,恢復到集羣的。
由於editlog文件很大所有,集羣再次啓動時會花費較長時間。
爲了加快集羣的啓動時間,所以使用secondarynameNode輔助NameNode合併發Fsimage,editlog。
原理如下
在這裏插入圖片描述
完成合並的是secondarynamenode,會請求namenode停止使用edits,暫時將新寫操作放入一個新的文件中(edits.new)。secondarynamenode從namenode中通過http get獲得edits,因爲要和fsimage合併,所以也是通過http get 的方式把fsimage加載到內存,然後逐一執行具體對文件系統的操作,與fsimage合併,生成新的fsimage,然後把fsimage發送給namenode,通過http post的方式。namenode從secondarynamenode獲得了fsimage後會把原有的fsimage替換爲新的fsimage,把edits.new變成edits。
Hadoop進入安全模式時需要管理員使用dfsadmin的save namespace來創建新的檢查點。
secondarynamenode在合併edits和fsimage時需要消耗的內存和namenode差不多,所以一般把namenode和secondarynamenode放在不同的機器上

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