secondary namenode元数据checkpoint机制

将机制前先明确下面的几点

namemode保存的元数据是在内存中的

namenode一般有128G

一个元数据大小为150B,记录一个块(0-128M)。所以hadoop不适用存储一个小文件。

secondary  namenode也是在内存中操作

 

secondarynamenode元数据checkpoint机制

当客户端不断发出命令的时候,namenode都做了什么?

打个比方说:现在客户端发出一串下面的命令

上传文件:/aaa.txt

修改文件   /aaa.txt    to  /bbb.txt

修改文件   /bbb.txt    to  /ccc.txt

修改文件   /ccc.txt    to  /ddd.txt

上传文件:/1.d

1:namenode记录/aaa.txt的元数据

2: namenode记录/1.d的元数据

3:namenode将上面的命令记录在操作日志中(edits)。

为什么是edits?下面的图可以解释

 

在上面的操作中secondary  namenode做了什么?

1 secondary  namenode和namenode之间存在一种类似心跳检查机制,secondary  namenode会时常问namenode要不要来一次edits文件合并(checkpoing)。

2 namenode收到secondary  namenode的提问,刚好现在namenode需要来一次edits文件合并(checkpoing),就告诉对方说,我需要,为了这个事情,我们同时把管道建立起来吧。

3 namenode生成一个新的edits(滚动实现),将所有旧的edits文件和镜像文件(fsImage)一起打包通过管道发给secondary  namenode。

4 secondary  namenode收到来自于namenode的所有edits文件和镜像文件(fsImage)。这个时候,他在内存中做了合并操作。

怎么合并?比如说刚刚什么的一系列命令

上传文件:/aaa.txt

修改文件   /aaa.txt    to  /bbb.txt

修改文件   /bbb.txt    to  /ccc.txt

修改文件   /ccc.txt    to  /ddd.txt

上传文件:/1.d

合并后

上传文件:/aaa.txt

修改文件   /aaa.txt    to  /ddd.txt

上传文件:/1.d

这样操作后,大幅度减少edits文件的多余命令,放在down机重启的时候,要解析很多edits文件和fsImage文件。因为做了合并操作

5合并后,生产一个fsImage文件,通过管道覆盖namenode的fsImage文件。

6结束,继续间隔一段时间问namenode是否需要做合并操作(说白了和redis AOF的重写AOF文件一样)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值