启动时我们会执行 start-hbase.sh ,下面来分析一下这个脚本,
首先会设置一下bin目录
然后执行如下操作:
1、执行.$bin/hbase-config.sh
2、看是否是自动执行,是参数是 autostart 否则是 start
3、执行 .$bin/hbase-daemon.sh
下边我们分析一下源码(源码是基于hbase 3.0):
调用java类,java服务端 从源码的整体角度看,
首先是调用 org.apache.hadoop.hbase.master.HMaster的main
方法,接收参数 start 或stopt 等。
1、会调用 HMasterCommandLine.doMain()方法。
2、通过toolRunner 跳转到HMaseterCommandLine.run()方法,我们分析startMaster()
3、zookeeper配置设置,然后 zooKeeperCluster.startup(zkDataPath)
4、RegionServer 配置设置,然后cluster.startup();
之后就开始 waitOnMasterThreads 直到 closeAllRegionServerThreads(regionservers);
hbase 在zookeeper 中的顺序
分为两种,一种是自带的启动,另一种是使用其它的zookeeper启动。
自带zookeeper
1、设置zk 端口号、path等
2、设置zk超时时间
3、采用 NIOServerCnxnFactory 方式连接 ,并返回端口。
(未完待续)