SecondaryNameNode对NameNode的checkpoint流程的源码分析

SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint。SecondaryNameNode的工作流程图如下:下面根据源码对此流程进行详细分析:1.首先分析SecondaryNameNode的创建过程,主要的初始化逻辑在SecondaryNameNode.initialize(Configuration c
摘要由CSDN通过智能技术生成

SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint。

1.首先分析SecondaryNameNode的创建过程,主要的初始化逻辑在SecondaryNameNode.initialize(Configuration conf)方法中:

 1.1)从配置文件中获取参数"dfs.namenode.servicerpc-address"的值(是NameNode的地址),若此地址为空,则获取"dfs.namenode.rpc-address"的值,若仍然为空,则取"fs.default.name"的值作为缺省值;
 1.2)根据上一步得到的地址通过【RPC.waitForProxy(....)】创建NameNode对象,并赋值给SecondaryNameNode.namenode变量;
 1.3)获取参数"fs.checkpoint.dir"值(为checkpoint目录),缺省为"/tmp/hadoop/dfs/namesecondary",对N个目录初始化File对象,并赋值给SecondaryNameNode.checkpointDirs:Collection<File>对象;
 1.4)获取参数"fs.checkpoint.edits.dir"值(为checkpoint的edit文件目录),缺省为"/tmp/hadoop/dfs/namesecondary",对N个目录初始化File对象,并赋值给SecondaryNameNode.checkpointEditsDirs:Collection<File>对象;
 1.5)【new CheckpointStorage()】初始化CheckpointStorage对象并赋值给SecondaryNameNode.checkpointImage变量,此类继承FSImage类;
 1.6)【CheckpointStorage.recoverCreate(Collection<File> checkpointDirs, Collection<File> checkpointEditsDirs)】,根据checkpointDirs和checkpointEditsDirs来设置(Storage)FSImage.storageDirs队列的值,逻辑与创建NameNode中第二.3.2步一样;
 1.7)获取参数"fs.checkpoint.period"和"fs.checkpoint.size",分别表示checkpoint周期和checkpoint时edit文件的大小;赋值给SecondaryNameNode.checkpointPeriod和SecondaryNameNode.checkpointSize变量;

 1.8)初始化HttpServer,赋值给SecondaryNameNode.infoServer变量并开启此服务:此服务注册了一个Servlet:httpServer.addInternalServlet("getimage", "/getimage",GetImageServlet.class, true, SecurityUtil.useKsslAuth());注册GetImageSe

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值