hadoop namenode启动不了_Hadoop NameNode启动流程

NameNode服务端的启动过程

不知道大家是否自己搭建过Hadoop集群,如果搭建过是否还记得Hadoop NameNode的启动命令呢?下面是Linux服务器上启动NameNode的命令。

[root@hadoop01 sbin]# hadoop-daemon.sh start namenode

既然是通过hadoop-daemon.s进行启动,那么我们可以看看这个shell脚本是怎么启动NameNode的呢?

120f110ba26db0998318e40af166c41b.png

由此可知是调用hdfs的脚本的,那么我们再进去hdfs脚本一探究竟吧

55e0303b1da77f293fffbac4d73c1a27.png

从中,我们可以看出最终启动的入口是org.apache.hadoop.hdfs.server.namenode.NameNode。我们先来看看源码中关于NameNode的介绍吧。

NameNode作用分析

d3f4b44e2fa18976a8b229b87aa46369.png
  • 两个关键的就是

1. filename -> blocksequence (namespace) 

文件到block的映射,上传的文件被切分为多个block(128m),这份映射数据就 是namespace,存储在磁盘上。

2. block -> machinelist (inodes)

block到datanode的映射,每个block都会分配给一个datanode,每个block还 有3个副本,也就是每个block对应多个datanode,这个映射数据就是inodes。 在NameNode每次启动的时候,由datanode汇报过来的。

  • NameNode既指这个类,也指'NameNode server。 FSNamesystem "类实际上执行了大部分的文件系统管理。 NameNode "类本身的大部分内容是向外界展示IPC接口和HTTP服务器,以及一些配置管理。
  • NameNode实现了ClientProtocol接口,这个接口允许客户端请求DFS服务。ClientProtocol不是为DFS客户端直接使用而设计的,终端用户应该使用FileSystem
  • NameNode实现了DatanodeProtocol接口,被存储DFS数据库的DataNode使用。

NameNode入口

下面NameNode.main()是入口函数

c5aed0f2b24d85ae243daf01970b46f0.png

由上面代码可知,createNameNode(argv, null)方法对NameNode进行实例化 ,今天就先写到这,下篇文章将继续讲解NaNode的初始化。

下面是一张NameNode启动流程的思维导图,有兴趣的关注我获取。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值