#Hadoop 管理(一)

namenode 結構目錄

namenode 被格式化後所產生的目錄

${dfs.name.dir}
|—–current
 |—-VERSION
 |—-edits
 |—-fsimage
 |—–fstime

version 文件

#Tue Mar 10 19:21:36 GMT 2009
namespaceID=134368441
cTime=0
storageType = NAME_NODE
layoutVersion = -18

VERSION 文件是一個Java屬性文件
其中layoutVersion=-18,描述HDFS持久性數據結構(佈局)的版本,但是該版本號與Hadoop發佈包的版本號無關。重要佈局變化,版本號便會遞減。

namespaceIdD是文件系統的唯一標識
cTime 標記namenode的創建時間,剛剛格式化,這個值爲0;但是文件系統升級後,該值會更新到新的時間戳
storageType說明存儲目錄包含的是namenode的數據結構
namenode 的存儲目錄還包含edits,fsimage,stime等二進制文件

文件系統映像和編輯日誌

文件系統客戶端執行寫操作時(創建或者移動文件),這些操作首先被記錄到編輯日誌中。namenode在內存中維護文件系統的元數據;當編輯日誌被修改時,相關元數據信息也同步更新。
fsiamge文件是文件系統元數據的一個永久性檢查點。它是一個大型文件,不是每一個寫操作都會更新此文件。一旦namenode發生故障,可以先把fsimage文件載入到內存重構新近的元數據,再執行編輯日誌記錄的各項操作。

fsimage 文件包含文件系統中的所有目錄和文件inode的序列化信息,(inode是指在許多“類Unix文件系統”中的一種數據結構。 每個inode保存了文件系統中的一個文件系統對象(包括文件、目錄、設備文件、socket、管道, 等等)的元信息數據,但不包括數據內容或者文件名)
數據塊存儲在datanode中,但fsimage文件並不描述datanode。取而代之的是,namenode將這種映射關係放在內存中。當datanode加入集羣時,namenode向datanode索取塊列表以建立映射關係;namenode還將定期徵詢datanode以確保它擁有最新的映射。

下圖爲創建檢查點的過程
這裏寫圖片描述
1. secondary namenode 請求primary namenode 停止使用edits文件,暫時將新的寫操作記錄到一個新文件中。
2. secondary namenode 從 primary namenode 獲取 fsimage 和 edits (使用 http get )
3. secondary namenode 將 fsimage 文件加入 memory ,逐一執行edits文件中的操作,創建新的fsimage文件。
4. secondary namenode 將新的fsimage文件發送回primary namenode(使用 http post)
5. primary namenode用從secondary namenode接收的fsimage文件替換舊的fsimage文件;用步驟1產生的新的edits文件替換舊的edits文件。同時,還更新fstime文件來記錄檢查點執行的時間。

datanode的current目錄中的其他文件都有blk_前綴,包含HDFS塊文件和塊的元數據文件(含.meta後綴)。

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