1. 程式人生 > >fsimage與editlog詳解

fsimage與editlog詳解

1 概述
HDFS中的NameNode被稱為元資料節點DataNode稱為資料節點。NameNode維護了檔案與資料塊的對映表以及資料塊與資料節點的對映表,而真正的資料是儲存在DataNode上。 
對於NameNode如何儲存這些資訊,它維護兩個檔案,一個是fsimage,一個是editlog。

2 fsimage與editlog作用
fsimage儲存了最新的元資料檢查點,在HDFS啟動時載入fsimage的資訊,包含了整個HDFS檔案系統的所有目錄和檔案的資訊。 
對於檔案來說包括了資料塊描述資訊、修改時間、訪問時間等;對於目錄來說包括修改時間、訪問許可權控制資訊(目錄所屬使用者,所在組)等。
editlog主要是在NameNode已經啟動情況下對HDFS進行的各種更新操作進行記錄,HDFS客戶端執行所有的寫操作都會被記錄到editlog中。
3 設計好處
NameNode起來之後,HDFS中的更新操作會重新寫到edits檔案中,因為fsimage檔案一般都很大(GB級別的很常見),如果所有的更新操作都往fsimage檔案中新增,這樣會導致系統執行的十分緩慢,對於更新操作都會記錄在editlog中,為了避免editlog不斷增大,secondary namenode會週期性合併fsimage和edits成新的fsimage,新的操作記錄會寫入新的editlog中,這個週期可以自己設定(editlog到達一定大小或者定時)。,術業有專攻嘛。

4 重要性
fsimage包含Hadoop檔案系統中的所有目錄和檔案idnode的序列化資訊,所以如果fsimage丟失或者損壞了,那麼即使DataNode上有塊的資料,但是我們沒有檔案到塊的對映關係,我們也無法用DataNode上的資料!所以定期及時的備份fsimage和edits檔案非常重要!

總之:

fsimage上邊儲存了DataNode上邊的資料的塊的對映關係以及相關資訊

editlog上邊儲存了DataNode上邊的資料的修改,編輯等相關資訊。

 

 

1、概念:

fsimage儲存了最新的元資料檢查點。

edits儲存自最新檢查點後的名稱空間的變化。

2、工作原理:

從最新檢查點後,hadoop將對每個檔案的操作都儲存在edits中,為避免edits不斷增大,secondary namenode就會週期性合併fsimage和edits成新的fsimage,edits再記錄新的變化。

這種機制有個問題:因edits存放在Namenode中,當Namenode掛掉,edits也會丟失,導致利用secondary namenode恢復Namenode時,會有部分資料丟失。