本文主要是介绍handoop0.20.2:名字节点namenode的启动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
注:分析到的主要代码在
org.apache.hadoop.hdfs.server.namenode.NameNode和org.apache.hadoop.hdfs.server.namenode.FSNamesystem中
1.NameNode.main()是名字节点启动的入口,主要就是通过createNameNode方法创建一个namenode对象,创建成功后再等待它执行结束(namenode.join())
public static void main(String argv[]) throws Exception {try {StringUtils.startupShutdownMessage(NameNode.class, argv, LOG);NameNode namenode = createNameNode(argv, null);if (namenode != null)namenode.join();} catch (Throwable e) {LOG.error(StringUtils.stringifyException(e));System.exit(-1);}}
2.createNamenode()方法实际都做了什么?
-根据argv参数找到启动选项startOpt
-根据startOpt设置配置文件
-setStartupOption(conf, startOpt),根据startOpt的值选择不同的启动处理方式,这里大概是除了FORMAT和FINALIZE选项,其他的选项都将执行->
-执行namenode构造方法,根据conf,new一个namenode并返回,在NameNode.main中接收
public static NameNode createNameNode(String argv[], Configuration conf) throws IOException {if (conf == null)conf = new Configuration();StartupOption startOpt = parseArguments(argv);//根据argv启动选项if (startOpt == null) {printUsage();return null;}setStartupOption(conf, startOpt);switch (startOpt) {case FORMAT:boolean aborted = format(conf, true);
这篇关于handoop0.20.2:名字节点namenode的启动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!