【hadoop二次开发】对namenode的启动流程的总结

NameNode启动流程首先在源码文件NameNode.java中的main函数中,
主要基于createNameNode方法,进入该方法后,根据参数,进行模式匹配,匹配到default,
进入NameNode构造函数,会在createHAContext方法(在FSNamesystem.java源码文件中)中启动一些回调函数,
比如startActiveServices()函数,开启守护线程this.nnrmthread = new Daemon(new NameNodeResourceMonitor());对磁盘资源进行监控,以及判断是否进入安全模式
然后首先进入初始化流程,如果当前角色是NameNode启动http服务,然后加载元数据,进行元数据的替换等操作,然后rpc的创建,最后启动startCommonServices
在源码文件NameNode.java中startCommonServices方法中namesystem.startCommonServices(conf, haContext);进入,
在源码文件FSNamesystem.java的startCommonServices(Configuration conf, HAContext haContext)方法中创建nnResourceChecker = new NameNodeResourceChecker(conf);磁盘监控类,
在源码文件NameNodeResourceChecker.java中NameNodeResourceChecker方法中监控谁放入HashMap中,
这样后台守护线程不断去监控NameNodeResourceChecker的内容,以及进行磁盘资源的检查,然后进行数据块汇报,汇报completed状态的数据块,
在汇报过程中进行判断是否需要离开安全模式,还是进入安全模式 ,并且进入安全模式和离开安全模式都有一定的条件;还有一个磁盘是否进入安全模式的检查每隔1s的while循环。

启动http

在这里插入图片描述

元数据加载

在这里插入图片描述

创建RPC

在这里插入图片描述

守护线程工作和总体流程

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值