NameNode服务端的启动过程

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

[[email protected] sbin]# hadoop-daemon.sh start namenode

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

 

教你一步一步分析Hadoop NameNode启动流程

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

 

教你一步一步分析Hadoop NameNode启动流程

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

NameNode作用分析

教你一步一步分析Hadoop NameNode启动流程

 

  • 两个关键的就是

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()是入口函数

教你一步一步分析Hadoop NameNode启动流程

 

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

 

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

教你一步一步分析Hadoop NameNode启动流程

教你一步一步分析Hadoop NameNode启动流程

 

 

相关文章:

  • 2021-06-23
  • 2021-12-31
  • 2021-12-04
  • 2021-12-12
  • 2021-04-22
  • 2021-11-05
  • 2021-08-01
猜你喜欢
  • 2021-08-28
  • 2021-05-10
  • 2021-11-26
  • 2022-12-23
  • 2021-11-18
  • 2021-10-21
相关资源
相似解决方案