HDFS的元資料持久化

2021-05-10 14:40:53 字數 1766 閱讀 7345

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...