namenode的启动

我们简单看下namenode启动需要经历的步骤。

启动9870服务端口

因为namenode是一个进程,所以找到它的main方法:

在这里插入图片描述

进入createNameNode

在这里插入图片描述

找到new NodeNode(conf),进去。

在这里插入图片描述

找到初始化方法,进入:

在这里插入图片描述

他要获取绑定的地址,我们希望知道这个地址是什么。

在这里插入图片描述

看看这个默认的地址:

在这里插入图片描述

端口号是9870。这就是我们经常用的namenode的web端口。

加载镜像文件和编辑日志文件

回到初始化initialize方法:

在这里插入图片描述

现在进入loadNamesystem(conf)

在这里插入图片描述

可以看到它同时将fsImage和edits文件加载到了内存,这里包含所有的数据。

初始化RPC服务

再回到初始化方法,进入createRpcServer(conf)

在这里插入图片描述

在这里插入图片描述

一直进入InetSocketAddress serviceRpcAddr = nn.getServiceRpcServerAddress(conf);可以了解到rpc的端口是8020(默认)。

同时,他用RPC Builder的模式构造了server端的服务。我们看看其中所使用的协议:

在这里插入图片描述

这是一个客户端用来通信的协议(和没说一样)。

启动资源检查

再次回到初始化代码,进入startCommonServices(conf);

在这里插入图片描述

在这里插入图片描述

再进:

在这里插入图片描述

再进:

在这里插入图片描述

再进(一路走):

在这里插入图片描述

查看资源是否可用。

在这里插入图片描述

关键在于其中的一个常量。

在这里插入图片描述

这个值默认是100M,也就是说,如果你磁盘不到100MB了,人家就要给你警告,说,再往edits写操作日志空间快不够啦。

检查心跳

回到检查资源最开始那里:

在这里插入图片描述

在这里插入图片描述

这个datanodeManager是用来管理NN和DN之间的联系的。

在这里插入图片描述

现在他要对心跳进行检测。

在这里插入图片描述

这是一个线程。

在这里插入图片描述

run方法中找到检测心跳的逻辑。

在这里插入图片描述

我们看他是如何判断DN的死亡的。

在这里插入图片描述

我们关注一个常量heartbeatExpireInterval

在这里插入图片描述

这个值就是10分加30秒。超过这个值,NN就认为DN死了。

检查是否进入安全模式

回到BlockManager的激活代码,进入安全模式的激活检查:

在这里插入图片描述

我们看它的阈值是如何界定的:

在这里插入图片描述

在这里插入图片描述

检查blockThreshold的值。

在这里插入图片描述

现在要去看看threshold的值。

在这里插入图片描述

它默认是0.999,也就是说,如果有1000个块,999个能正常启动还是可以启动的,如果有两个块不能启动那整个集群就不能启动。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
集群规划: 主机名 IP 安装的软件 运行的进程 weekend01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend03 192.168.1.203 jdk、hadoop ResourceManager weekend04 192.168.1.204 jdk、hadoop ResourceManager weekend05 192.168.1.205 jdk、hadoop、zookeeper DataNodeNodeManager、JournalNode、QuorumPeerMain weekend06 192.168.1.206 jdk、hadoop、zookeeper DataNodeNodeManager、JournalNode、QuorumPeerMain weekend07 192.168.1.207 jdk、hadoop、zookeeper DataNodeNodeManager、JournalNode、QuorumPeerMain 说明: 1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务 仅同步active namenode的状态,以便能够在它失败时快速进行切换。 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据 信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode 这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态 2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个 是Standby,状态由zookeeper进行协调

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值