Hadoop中的fsimage和edits(能力工場--Hadoop)

在hadoopor論壇裏看到這樣的問題,這裏做個回答。

我有一個疑問,在namenode的內存中記錄了fsimsage信息,
但是內存中的fsimage元數據是在namemode啓動時去合併本地的
editlog和fsimage得到的,這樣的話就存在以下問題:
1. 如果namenode一直不重新啓動的話
那麼如何保證內存中的fsimage是最新的呢
2.在最新的hdfs版本中是否支持週期性的去合併本地editlog和fsimage信息?
3.本地的fsimage中的元數據是在什麼時候寫入的?
新建文件的時候會向editlog中記錄日誌
是在這個時候把元數據寫入到fsimage中的嗎?
如果是,那麼editlog爲什麼還要和fsimage進行合併?
因爲editlog中記錄的元數據,在fsimage中都已經有了。
那位能幫忙解答下,不勝感激。


解答:
1:問題本身就有問題,fsimage是存於硬盤的元數據檢查點,Hadoop不會對每個文件操作都寫出到fsimage,這樣是很慢的,但是每個文件操作都會在提交後運行前先寫入edits編輯日誌,這樣在namenode出現故障後,就會將fsimage和edits編輯日誌結合讀入內存,重建元數據信息。具體的檢查點和日誌滾動,可以參見數據庫的檢查點和Apache的日誌滾動技術。

2:上面也說過,參考數據庫的檢查點知識。爲了避免edits編輯日誌的無限制擴大,secondary namenode 就回按照時間閾值(比如1小時)或者按大小閾值(edits編輯日誌文件大小超過64M,這些參數都可以設置)“週期性”的讀取namenode中的edits和fsimage重構fsimage檢查點,同時在namenode中進行edits的滾動,來解決這個問題。

3:正確理解了namenode和secondary namenode的機制就明白了fsimage是“週期性”的進行更新的。
Hadoop secondary namenode fsimage檢查點更新


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