HBase源码解析(一) HMaster启动流程

本文深入剖析HBase-0.94.1中HMaster的启动流程,从命令行启动简述到采用的ToolRunner机制,再到HMaster启动的内部细节,详细解释了HMaster如何启动并成为ActiveMaster的过程。
摘要由CSDN通过智能技术生成

本文基于HBase-0.94.1分析HMaster的启动流程。

1.HMaster命令行启动简述

 HMaster的启动流程可以概括为:

 将用户所要执行的"hbase-daemon.sh start master" 操作封装成一个HMasterCommandLine对象(一个tool实例),交给org.apache.hadoop.util.ToolRunner的静态方法run(conf,tool,args) 去执行;其中args为"start". 具体流程如下:

通过$HBASE_HOME/bin/hbase-daemon.sh start master 启动master时,会调用$HBASE_HOME/bin/hbase start master

$HBASE_HOME/bin/hbase start master
可以看下$HBASE_HOME/bin/hbase的内容:

"$JAVA" -XX:OnOutOfMemoryError="kill -9 %p" $JAVA_HEAP_MAX $HBASE_OPTS -classpath "$CLASSPATH" $CLASS "$@"
也即执行了如下方法:

org.apache.hadoop.hbase.master.HMaster.main("start")
HMaster的main方法创建了一个HMasterCommandLine对象,执行该对象的doMain(args)方法。

  /**
   * @see org.apache.hadoop.hbase.master.HMasterCommandLine
   */
  public static void main(String [] args) throws Exception {
	VersionInfo.logVersion();
    new HMasterCommandLine(HMaster.class).doMain(args);
  }
ServerCommandLine是HMasterCommandLine的父类,它实现了Tool接口,通过Hadoop中的ToolRunner机制执行启动/停止等各种命令
  /**
   * Parse and run the given command line. This may exit the JVM if
   * a nonzero exit code is returned from <code>run()</code>.
   */
  public void doMain(String args[]) throws Exception {
    int ret = ToolRunner.run(
      HBaseConfiguration.create(), this, args);
    if (ret != 0) {
      System.exit(ret);
    }
  }

2.HMaster的启动采用了ToolRunner机制

ToolRunner的run方法如下:

(1). 将conf和args封装成GenericOptionsParser对象parser, 根据parser获取toolArgs
(2). 返回tool.run(toolArgs);
public static int run(Configuration conf, Tool tool, String[] args)
    throws Exception{
    if(conf == null) {
      conf
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值