• 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;
      }
     
  • 相关阅读:
    python使用tcp实现一个简单的下载器
    python中的tcp
    python使用udp实现聊天器
    python网络编程-udp
    python中的eval函数
    python文件
    python模块和包
    python异常处理
    python面向对象学习(七)单例
    python面向对象学习(六)类属性、类方法、静态方法
  • 原文地址:https://www.cnblogs.com/bokun-wang/p/3152596.html
Copyright © 2020-2023  润新知