HDFS的Secondarynamenode工作机制
生活随笔
收集整理的這篇文章主要介紹了
HDFS的Secondarynamenode工作机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
HDFS 的元信息和 SecondaryNameNode
當 Hadoop 的集群當中, 只有一個 NameNode 的時候, 所有的元數據信息都保存在了 FsImage 與 Eidts 文件當中, 這兩個文件就記錄了所有的數據的元數據信息, 元數據信息的保存目錄配置在了 hdfs-site.xml 當中
<property><name>dfs.namenode.name.dir</name><value>file:///export/servers/hadoop-3.1.1/datas/namenode/namenodedatas</value> </property> <property><name>dfs.namenode.edits.dir</name><value>file:///export/servers/hadoop-3.1.1/datas/dfs/nn/edits</value> </property>FsImage 和 Edits 詳解
-
edits
- edits 存放了客戶端最近一段時間的操作日志
- 客戶端對 HDFS 進行寫文件時會首先被記錄在 edits 文件中
- edits 修改時元數據也會更新
- 每次 HDFS 更新時 edits 先更新后客戶端才會看到最新信息
-
fsimage
- NameNode 中關于元數據的鏡像, 一般稱為檢查點, fsimage 存放了一份比較完整的元數據信息
- 因為 fsimage 是 NameNode 的完整的鏡像, 如果每次都加載到內存生成樹狀拓撲結構,這是非常耗內存和CPU, 所以一般開始時對 NameNode 的操作都放在 edits 中
- fsimage 內容包含了 NameNode 管理下的所有 DataNode 文件及文件 block 及 block 所在的 DataNode 的元數據信息.
- 隨著 edits 內容增大, 就需要在一定時間點和 fsimage 合并
fsimage 中的文件信息查看
官方查看文檔
使用命令 hdfs oiv
cd /export/servers/hadoop-3.1.1/datas/namenode/namenodedatas hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xmledits 中的文件信息查看
官方查看文檔
使用命令 hdfs oev
cd /export/servers/hadoop-3.1.1/datas/dfs/nn/edits hdfs oev -i edits_0000000000000000865-0000000000000000866 -o myedit.xml -p XMLSecondaryNameNode 如何輔助管理 fsimage 與 edits 文件?
-
SecondaryNameNode 定期合并 fsimage 和 edits, 把 edits 控制在一個范圍內
-
配置 SecondaryNameNode
-
SecondaryNameNode 在 conf/masters 中指定
-
在 masters 指定的機器上, 修改 hdfs-site.xml
-
修改 core-site.xml, 這一步不做配置保持默認也可以
<!-- 多久記錄一次 HDFS 鏡像, 默認 1小時 --> <property><name>fs.checkpoint.period</name><value>3600</value> </property> <!-- 一次記錄多大, 默認 64M --> <property><name>fs.checkpoint.size</name><value>67108864</value> </property>特點
- 完成合并的是 SecondaryNameNode, 會請求 NameNode 停止使用 edits, 暫時將新寫操作放入一個新的文件中 edits.new
- SecondaryNameNode 從 NameNode 中通過 Http GET 獲得 edits, 因為要和 fsimage 合并, 所以也是通過 Http Get 的方式把 fsimage 加載到內存, 然后逐一執行具體對文件系統的操作, 與 fsimage 合并, 生成新的 fsimage, 然后通過 Http POST 的方式把 fsimage 發送給 NameNode. NameNode 從 SecondaryNameNode 獲得了 fsimage 后會把原有的 fsimage 替換為新的 fsimage, 把 edits.new 變成 edits. 同時會更新 fstime
- Hadoop 進入安全模式時需要管理員使用 dfsadmin 的 save namespace 來創建新的檢查點
- SecondaryNameNode 在合并 edits 和 fsimage 時需要消耗的內存和 NameNode 差不多, 所以一般把 NameNode 和 SecondaryNameNode 放在不同的機器上
總結
以上是生活随笔為你收集整理的HDFS的Secondarynamenode工作机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS的块缓存和访问权限
- 下一篇: HDFS数据的写入过程