zoukankan      html  css  js  c++  java
  • 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;
      }
     
  • 相关阅读:
    慈不掌兵,义不行贾,烂好人难成大业!
    克服焦虑
    静态路由汇总(路由聚合)
    OSPF协议介绍及配置 (下)
    OSPF协议介绍及配置 (上)
    我为什么鼓励工程师写blog
    佛弟子有三样东西需要永远保密
    【交换机在江湖】第十三章 VLAN划分篇
    FileZilla Server ftp 服务器下通过alias别名设置虚拟目录(多个分区)
    Java 对象和类
  • 原文地址:https://www.cnblogs.com/bokun-wang/p/3152596.html
Copyright © 2011-2022 走看看