摘要
通过前边的文章我们已经知道,hadoop namenode启动的类org.apache.hadoop.hdfs.server.namenode.NameNode,本节内容就顺着其启动流程,查看在namenode启动的过程中其都做了哪些工作(关于一些技术细节就暂时放过)。
启动
我们通过命令
$start-dfs.sh
启动hadoop集群的namenode和datanode,在namenode启动的过程中JVM首先加载org.apache.hadoop.hdfs.server.namenode.NameNode这个类。
NameNode启动流程
从分析流程上来说我们主要关注两部分代码
static语句块,在执行主函数前
static{
HdfsConfiguration.init();
}
通过函数的名称我们也可以看出上述代码作用是初始化HDFS的配置信息。
在执行完static语句块后执行main函数,其代码如下。(分析直接写在代码的注释当中)
public static void main(String argv[]) throws Exception{
//分析传入的参数是否为帮助参数,如果是帮助的话打印帮助信息,并退出。
if(DFSUtil.parseHelpArgument(argv,NameNode.USAGE,System.out,true)){
System.exit(0);
}
try{
//格式化输出启动信息,并且创建hook(打印节点关闭信息)
StringUtils.startupShutdo

本文详细剖析了Hadoop Namenode的启动流程,从NameNode主类开始,探讨了静态代码块的角色,尤其是配置初始化过程。通过分析启动配置和主函数,揭示了HdfsConfiguration类的初始化细节,包括单例设计和配置映射的维护,确保系统正确运行。
最低0.47元/天 解锁文章
1100

被折叠的 条评论
为什么被折叠?



