dfs.name.dir
這個引數設定hdfs的元資料資訊存放在本地作業系統的目錄,如果有多個目錄用逗號分開。
目錄裡的檔案示例見下圖
1049092 2009-11-12 09:15 edits
17678000 2009-11-12 08:50 fsimage
8 2009-11-12 08:50 fstime
100 2009-11-12 08:50 version
editlog
namenode用edits檔案來儲存對元資料進行的每次操作,比如建立檔案,刪除檔案。類似於mysql中的binlog機制。
secondnamenode
secondnamenode其實只是乙個簡單的元資料備份程序,它會定期(預設是1小時)把edits檔案的內容合併到fsimage檔案,同時儲存最新的元資料副本在secondnamenode程序所在機器的檔案系統裡
fileimage
fsimage+edits才能準確表示記憶體中的元資料資訊,namenode啟動的時候會合併edits檔案到fsimage,然後load這個image到記憶體。這個時候系統處於safemode,等待datanode上報各自的block資料塊資訊。
safemode
dfs.safemode.threshold.pct(預設值0.999f)表示hdfs啟動的時候,如果datanode上報的block個數達到了元資料記錄的block個數的0.999倍才可以離開安全模式,否則一直是這種唯讀模式。如果設為1則hdfs永遠是處於safemode。
下面這行摘錄自namenode啟動時的日誌(block上報比例1達到了閥值0.9990)
the ratio of reported blocks 1.0000 has reached the threshold 0.9990. safe mode will be turned off automatically in 18 seconds.
format hdfs系統
hadoop namenode -format命令用來初始化hdfs系統,具體就是把dfs.name.dir目錄中的四個檔案edits,fsimage,fstime ,version初始化。
namespaceid
namenode初始化的時候會產生乙個隨機id,記錄在version檔案中的namespaceid欄位。
cat version
#thu nov 12 08:50:20 cst 2009
namespaceid=897887053
ctime=0
storagetype=name_node
layoutversion=-18
datanode的version檔案中的namespaceid必須和namenode中的一致,否則datanode註冊會失敗。
Hadoop 元資料持久化
檔案系統元資料的持久化 namenode儲存hdfs的元資料。對於任何對檔案元資料產生修改的操作,namenode都使用乙個稱為editlog的事務日誌記錄下來。例如,在hdfs中建立乙個檔案,namenode就會在editlog中插入一條記錄來表示 同樣,修改檔案的replication因子也將往...
HDFS元資料
從形式上講,元資料可分為記憶體元資料和元資料檔案兩種。其中namenode在記憶體中維護整個檔案系統的元資料映象,用於hdfs的管理 元資料檔案則用於持久化儲存。從型別上講,元資料有三類重要資訊 第一類是檔案和目錄自身的屬性資訊,例如檔名 目錄名 父目錄資訊 檔案大小 建立時間 修改時間等。第二類記...
hdfs元資料儲存
namenode如何儲存元資料 1.nn對元資料的管理分為三部分,記憶體中完整的元資料,磁碟中接近完整的元資料映象檔案 fsimage 記錄元資料操作資訊的edits檔案 2.snn通過配置,定時請求nn,進行checkpoint 3.nn接受到checkpoint請求,會立即滾動正在寫的edits...