HDFS官網翻譯——HDFS 架構指南(四)
文件系統元數據的持久性
HDFS命名空間存儲在NameNode結點中。NameNode使用Editlog記錄文件系統元數據的每一次變更。Editlog是一個事務型日志。例如,HDFS創建新文件時會在Editlog文件中插入一條記錄。類似地,文件副本數的變更也會引起在Editlog文件中記錄一條日志。NameNode結點使用本地文件系統存儲Editlog文件。FsImage文件中存儲了文件系統命令空間,包含文件與文件系統屬性的map塊。FsImage作為NameNode結點本地的一個文件被存儲。
NameNode將文件系統命名空間的鏡像、文件塊map存儲在內存中。這個關鍵的元數據項被設計得非常緊湊,例如一個擁有4GB RAM的NameNode足以支持大量的文件和目錄。當NameNode結點啟動的時候,它從磁盤中讀取FSImage和Editlog文件,將Editlog中的事件讀取后執行,然后刷新FSImage到磁盤(其實就是先獲取FsImage中NameNode的狀態,然后逐一讀取EditLog中文件事件記錄一一執行,之后將最新的NameNode狀態刷回到FSImage文件中)。之后將EditLog文件丟棄,因為該文件中記錄的事件已經全部被使用了(記錄在持久化文件FSImage中了)。上述過程就叫做CheckPoint。在當前的版本中,只有NameNode啟動時才會出現一個checkpoint。將來的功能會支持間隔性的checkpoint。
DataNode結點將HDFS數據存儲在本地文件系統中。DataNode不感知HDFS文件,而是將特定文件分割為多塊HDFS數據塊存入本地文件系統。DataNode文件不能存放在同一個目錄,它使用啟發式方法(筆者也不清楚具體是什么)來確定每個目錄的最佳文件數量,并適當地創建子目錄。在同一個目錄中創建所有本地文件不是最佳選擇,因為本地文件系統可能無法有效地支持單個目錄中的大量文件。當DataNode啟動時,它掃描本地文件系統,生成與每個本地文件對應的所有HDFS數據塊的列表,并將這個報告發送給NameNode——Blockreport。
Hadoop 機器翻譯
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。