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