secondarynamenode

1.3.4 SecondaryNameNode
存在的意义

edits log会随着对文件系统的操作而无限制地增长,这对正在运行的NameNode而言没有任何影响,如果NameNode重启,则需要很长的时间执行edits log的记录以更新fsimage(元数据镜像文件)。在此期间,整个系统不可用。
在系统启动期间,NameNode合并fsimage+edits log

fsimage=0
edist log=很大

内存
fsimage=GB
edits log
内存->执行edits log条目

解决方案就是运行SecondaryNameNode,它的作用就是为NameNode内存中的文件系统元数据生成检查点(checkpoint)。fsimage

工作流程

edits_inprogress_00000000018_0000000028 seen_txid=29
1、secondarynamenode请求namenode生成新的edits log文件并向其中写日志。NameNode会在所有的存储目录中更新seen_txid文件
2、SecondaryNameNode通过HTTP GET的方式从NameNode下载fsimage和edits文件到本地。
3、SecondaryNameNode将fsimage加载到自己的内存,并根据edits log更新内存中的fsimage信息,然后将更新完毕之后的fsimage写到磁盘上。
4、SecondaryNameNode通过HTTP PUT将新的fsimage文件发送到NameNode,NameNode将该文件保存为.ckpt的临时文件备用。
5、NameNode重命名该临时文件并准备使用。此时NameNode拥有一个新的fsimage文件和一个新的很小的edits log文件(可能不是空的,因为在SecondaryNameNode合并期间可能对元数据进行了读写操作)。管理员也可以将NameNode置于safemode,通过hdfs dfsadmin -saveNamespace命令来进行edits log和fsimage的合并。

SecondaryNameNode要和NameNode拥有相同的内存。对大的集群,SecondaryNameNode运行于一台专用的物理主机。

在这里插入图片描述

检查点创建时机
对于创建检查点(checkpoint)的过程,有三个参数进行配置:

1、默认情况下,SecondaryNameNode每个小时进行一次checkpoint合并
由dfs.namenode.checkpoint.period设置,单位秒

2、在不足一小时的情况下,如果edits log存储的事务达到了1000000个也进行一次checkpoint合并
由dfs.namenode.checkpoint.txns设置事务数量

3、事务数量检查默认每分钟进行一次
由dfs.namenode.checkpoint.check.period设置,单位秒。

总结:
namenode
管理文件元数据
文件名称、大小、所属关系、权限、副本大小、副本个数
文件块的列表信息:(块的ID,偏移量,块的大小,块所在的主机名称列表)
持久化文件
fsimage(内存快照),edits log
fsimage很大,GB级别;edits log只追加的文件
用户操作首先记录到edits log中,然后更新内存
fsimage不保存数据块位置信息
在系统启动的时候,datanode向namenode发送文件块列表信息(bid)
datanode通过心跳向namenode汇报列表信息。
namenode元数据正常工作时,元数据放内存,高并发。
secondarynamenode
在系统启动的时候,namenode首先加载fsimage,然后逐条执行edits log中的日志操作,如果edits log很大,则需要很长时间才能加载完毕,向磁盘写新的fsimage,之后才可以对外提供服务。
周期性地从namenode拷贝fsimage+edits log,在SNN中合并为新的fsimage,推送给namenode。
条件:1、每小时一次,2、不足一小时,则只要edits log中记录的事务数达到了1000000,则合并。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值