HDFS元数据管理
元數據
HDFS的目錄結構,包含哪些文件夾子文件夾,以及文件夾下面包含哪些文件,以及每個文件的Block信息(id,副本系數,Block存放在那個DataNode上)
元數據存放在${hadoop.tmp.dir}/name路徑下。
在NameNode的內存中有一個樹形結構,存放的就是元數據信息,對文件的任何修改都在內存中有體現,但是如果機器掛掉之后,內存中的數據就會丟失,因此NameNode會定期將內存中的元數據寫到磁盤中,寫入磁盤中的文件就是fsimage,但是這只能解決一部分的問題,仍然會出現數據丟失的問題,因此HDFS采用記錄日志的方式來記錄操作,類似于mysql記錄日志。HDFS日志就記錄在edits文件中,這個文件中記錄了一段時間內所有對HDFS相關的操作操作。如果機器重啟之后,將fsimage與edits兩者結合起來就可以將數據恢復,數據就不會丟失了,這種操作往往是由SecondaryNameNode來完成,NameNode是響應客戶端的所有請求,本身壓力就不小,因此合并的操作就交給SecondaryNameNode來做。
SecondaryNameNode與NameNode的關系不是主備關系,是專門用來做合并操作的。當需要合并時,首先獲取NameNode中的fsimage與對應的edits,然后在內存中可以形成一個樹形結構,將edits更新到內存中去,這樣就得到一個完整的數據。
整個過程就叫做CheckPoint
總結
- 上一篇: 客户端读写数据到HDFS的流程
- 下一篇: HDFS中的safemode