Fsimage,Edits详解

NameNode元数据解析

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

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

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

FSimage,Editlog 主要用于在集群启动时将集群的状态恢复到关闭前的状态。

为了达到这目的,集群启动时将 FSimage、Editlog 加载到内存中,进行合并,合并后恢复完成。

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

<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

cd  /export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas/current
hdfs oiv -i fsimage_0000000000000000864 -p XML -o hello.xml

在这里插入图片描述

edits当中的文件信息查看

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. seconnaryNameNode 通知 NameNode 切换 Editlog
  2. secondaryNameNode 从 NameNode 中获取 FSimage 和 Editlog(通过http关系)
  3. secondaryNameNode 将 FSimage 载入内存,然后开始合并 Editlog,合并之后成为新的 FSimage
  4. secondaryNameNode 将新的 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

namenode元数据信息多目录配置

为了保证元数据的安全性,我们一般都是先确定好我们的磁盘挂载目录,将元数据的磁盘做 RAID1
NameNode 的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性。
具体配置如下:
hdfs-site.xml

<property>
   <name>dfs.namenode.name.dir</name>
<value>
file:///export/servers/Hadoop-2.6.0-cdh5.14.0/HadoopDatas/namenodeDatas
</value>
</property>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值