HDFS系列:HDFS 中的 Namenode 启动时都做了哪些事?

前言

在分布式系统中,整个集群是由主节点和从节点相互配合工作的,其中主节点作为这个集群的老大,承担着更高的职责以及风险,主节点的好坏也决定了整个集群是否能正常的对外工作,因此理解主节点的生命周期是很重要且有意义的事,下面小编将借助源码介绍一下HDFS中主节点Namenode的启动流程,看看它在启动的过程中做了哪些事情。

NameNode启动流程解析

进入Hadoop的NameNode类中可以发现,在NameNode的类里面一共创建了两个服务端,如图所示,分别是HttpServer服务端以及RpcServer服务端,其中HttpServer服务端通过绑定各种servlet供用户进行请求,用户可以访问50070端口来请求查看集群使用的各种资源,集群元数据的合并请求也是通过http请求进行的,而RpcServer服务端的作用主要是用来接收从节点以及client端发送过来的请求,比如说从节点datanode的心跳上报,client端的读写请求等等(其中主从节点之间通信的框架采用的是RPC框架)。
在这里插入图片描述
HDFS除了在Namenode启动时开启两种类型的Server之外为了能够快速的对外提供服务,还会进行元数据的加载,即将磁盘中的元数据加载到内存,以方便client端快速访问,如图所示。
在这里插入图片描述
开启服务和元数据的加载工作后,Namenode还会做一个很重要的工作,就是判断是否需要进入安全模式,为了能够安全的提供服务,避免集群能够正常稳定地运行,集群会进行安全模式的判断,一旦集群进入安全模式后,整个集群只对外提供读数据的服务,任何更改和删除操作均不可用,对于是否需要进入安全模式的判断语句如图所示。
在这里插入图片描述
整个方法返回的是一个布尔型的值,其中总共有三个判别语句,三个判别语句的意思分别如下:

  • first:blockSafe代表的是Namenode启动后datanode向Namenode汇报的可用的block的数量,blockThreshold代表的是上一次集群结束后所记录的可用block数*设置的阈值,一旦通过心跳汇报上来的可用的block数量小于上一次集群关闭后计算出来的block数阈值,就说明需要进入安全模式了。
  • second:获取存活的datanode数量是否小于自己设定的阈值,一旦小于自己设定的阈值(默认是0),集群就需要进入安全模式。
  • third:查看存储元数据的磁盘目录是否还有足够空间(默认是看是否小于100M),如果存储空间不够,也将进入安全模式。

上述是否进入安全模式的判断结束后,namenode进程还会开启心跳监听线程来接收各个datanode集将发来的心跳,如图所示。
在这里插入图片描述
至此整个namenode的启动流程也就到此结束了。简而言之,namenode的启动流程可以包含以下5个部分:

  1. 开启HttpServer服务端
  2. 进行元数据的加载工作
  3. 开启RpcServer服务端
  4. 判断是否进入安全模式
  5. 开启心跳监听线程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值