第五章 NameNode和SecondaryNameNode

5.1 NN和2NN的工作机制

元数据存储,如果存储在内存中,计算快,但是可靠性差;如果存储在磁盘上,计算慢,可靠性高;如果存储在内存+磁盘上,要去两个地方读取数据,效率低,所以,出现了fsImage存储数据,Edits追加数据。磁盘中备份元数据的是FsImageEdits文件(只进行追加操作,效率高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。一旦NameNode节点断电,可以通过FsImage和Edits的合并,合成元数据。但是,如果长时间添加数据到Edits中,会导致文件数据过大,效率降低,而且一旦断电,恢复元数据需要很长时间。因此,需要定期进行FsImage和Edits的合并,通过SecondaryNamenode进行。

  • 第一阶段:NameNode启动

  1. 第一次启动NameNode格式化后,创建fsImage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存;

  2. 客户端对元数据进行增删改的请求;

  3. NameNode记录操作日志,更新滚动日志;

  4. NameNode在内存中对元数据进行增删改。

  • 第二阶段:SecondaryNameNode工作

  1. SecondaryNameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果;

  2. SecondaryNameNode请求执行CheckPoint;

  3. NameNode滚动正在写的Edits日志;

  4. 将滚动前的编辑日志和镜像文件拷贝到SecondaryNameNode;

  5. SecondaryNameNode加载编辑日志和镜像文件到内存,并合并;

  6. 生成新的镜像文件fsimage.chkpoint;

  7. 拷贝fsimage.chkpoint到NameNode;

  8. NameNode将fsiamge.chkpoint重新命名成fsiamge。

5.2 Fsimage和edits解析

  1. 查看oiv和oev命令:oiv查看fsimage文件,oev查看edists文件
  2. oiv基本语法:hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径

  3. 远端下载到windows本地:sz fsiamge.xml
  4. oev基本语法:hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径

  5. 远端下载到windows本地:sz edits.xml

5.3 CheckPoint的时间设置

  1. 通常情况下,SecondaryNameNode每隔一个小时执行一次,设置hdfs-default.xml

  2. 一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值