前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fsimage和edits详解

fsimage和edits详解

作者头像
用户4870038
发布2021-02-05 11:37:41
6480
发布2021-02-05 11:37:41
举报

namenode元数据解析

  1. 第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载edits和fsimage文件到内存
  2. 客户端对元数据进行增删改的请求
  3. namenode记录操作日志,更新滚动日志
  4. namenode在内存中对数据进行增删改查
在这里插入图片描述
在这里插入图片描述

fsimage保存了最新的元数据检查点,在HDFS启动时加载fsimage的信息,包含了整个HDFS文件系统的所有目录和文件的信息。 对于文件来说包括了数据块描述信息、修改时间、访问时间等 对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)

editlog主要是在NameNode已经启动情况下对HDFS进行各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。

fsimage,editlog 主要用于在**集群启动时将集群的状态恢复到关闭前的状态。**为了达到这个目的,集群启动时将fsimage、editlog加载到内存中,进行合并,合并后恢复完成。

元数据信息目录的配置 hdfs-site.xml当中

代码语言:javascript
复制
<property>
  <name>dfs.namenode.name.dir</name>
     <value>
file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas
</value>
</property>
<property>
   <name>dfs.namenode.edits.dir</name>
   <value>
file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/dfs/nn/edits
</value>
</property>

FSimage文件当中的文件信息查看

使用命令 hdfs oiv

代码语言:javascript
复制
cd  /export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas/current
hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xml

edits当中的文件信息查看

查看命令 hdfs oev

代码语言:javascript
复制
cd  /export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/dfs/nn/edits/current
hdfs oev -i  edits_0000000000000000865-0000000000000000866 -o myedit.xml -p XML

secondarynameNode如何辅助管理FSImage与Edits文件

由于editlog记录了集群运行期间所有对HDFS的相关操作,所以这个文件会很大。

集群关闭后再次启动时会将Fsimage,editlog加载到内存中,进行合并,恢复到集群的。

由于editlog文件很大所有,集群再次启动时会花费较长时间。

为了加快集群的启动时间,所以使用secondarynameNode辅助NameNode合并Fsimage,editlog。 原理如下

在这里插入图片描述
在这里插入图片描述

1、 secnonaryNN通知NameNode切换editlog 2、secondaryNN从NameNode中获得FSImage和editlog(通过http方式) 3、secondaryNN将FSImage载入内存,然后开始合并editlog,合并之后成为新的fsimage 4、secondaryNN将新的fsimage发回给NameNode 5、NameNode用新的fsimage替换旧的fsimage

完成合并的是secondarynamenode,会请求namenode停止使用edits,暂时将新写操作放入一个新的文件中(edits.new)。secondarynamenode从namenode中通过http get获得edits,因为要和fsimage合并,所以也是通过http get 的方式把fsimage加载到内存,然后逐一执行具体对文件系统的操作,与fsimage合并,生成新的fsimage,然后把fsimage发送给namenode,通过http post的方式。namenode从secondarynamenode获得了fsimage后会把原有的fsimage替换为新的fsimage,把edits.new变成edits。

Hadoop进入安全模式时需要管理员使用dfsadmin的save namespace来创建新的检查点。

secondarynamenode在合并edits和fsimage时需要消耗的内存和namenode差不多,所以一般把namenode和secondarynamenode放在不同的机器上。

fsimage与edits的合并时机取决于两个参数,第一个参数是默认1小时fsimage与edits合并一次。 第二个参数是hdfs操作次数达到1000000 也会触发合并 第一个参数:时间达到一个小时fsimage与edits就会进行合并 dfs.namenode.checkpoint.period :3600 第二个参数:hdfs操作达到1000000次也会进行合并 dfs.namenode.checkpoint.txns :1000000 还有一个参数是每隔多长时间检查一次hdfs的操作次数 dfs.namenode.checkpoint.check.period :60

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • namenode元数据解析
  • FSimage文件当中的文件信息查看
  • edits当中的文件信息查看
  • secondarynameNode如何辅助管理FSImage与Edits文件
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档