hadoop namanodejava

最近突然想看下hadoop源码,有利于处理一些突发问题。先从name启动开始,

NameNode.java

 public static void main(String argv[]) throws Exception {

    try {

      StringUtils.startupShutdownMessage(NameNode.class, argv, LOG);  #这个应该是打印日志

      NameNode namenode = createNameNode(argv, null);    #实例化一个namenode

      if (namenode != null)

        namenode.join();

    } catch (Throwable e) {

      LOG.error(StringUtils.stringifyException(e));

      System.exit(-1);

    }

  }
createNameNode 首先判断配置文件
    if (conf == null)

      conf = new Configuration();

    StartupOption startOpt = parseArguments(argv);  #配置,如果传入参数为空直接诶new conf应该是使用默认配置,如果有传入参数就将参数传给parseArguments()方法

  if (startOpt == null) { #启动参数,如果没传入,将打印参数使用帮助吧,
      printUsage();
      return null;
    }

 

  switch (startOpt) {  #这里主要分两种情况,一中是格式化namenode,一种是FINALIZE namenode

      case FORMAT:FORMAT

        boolean aborted = format(conf, true);

        System.exit(aborted ? 1 : 0);

      case FINALIZE:

        aborted = finalize(conf, true);

        System.exit(aborted ? 1 : 0);

      default:

    }

 

 
  
private static StartupOption parseArguments(String args[]) {

    int argsLen = (args == null) ? 0 : args.length;

    StartupOption startOpt = StartupOption.REGULAR;

    for(int i=0; i < argsLen; i++) {

      String cmd = args[i];

      if (StartupOption.FORMAT.getName().equalsIgnoreCase(cmd)) {

        startOpt = StartupOption.FORMAT;

      } else if (StartupOption.REGULAR.getName().equalsIgnoreCase(cmd)) {

        startOpt = StartupOption.REGULAR;

      } else if (StartupOption.UPGRADE.getName().equalsIgnoreCase(cmd)) {

        startOpt = StartupOption.UPGRADE;

      } else if (StartupOption.ROLLBACK.getName().equalsIgnoreCase(cmd)) {

        startOpt = StartupOption.ROLLBACK;

      } else if (StartupOption.FINALIZE.getName().equalsIgnoreCase(cmd)) {

        startOpt = StartupOption.FINALIZE;

      } else if (StartupOption.IMPORT.getName().equalsIgnoreCase(cmd)) {

        startOpt = StartupOption.IMPORT;

      } else

        return null;

    }

    return startOpt;

  }

 

 

你可能感兴趣的:(hadoop)