HBase源码阅读-1-脚本
1.脚本 start-hbase.sh,hbase-daemon.sh,hbase-daemons.sh,zookeepers.sh,regionservers.sh,hbase,hbase-config.sh
1.1hbasehbase命令行入口,最终控制master,regionserver,zookeeper等启动或关闭
1.1.1hbaseshell
执行jruby脚本org.jruby.Main${HBASE_HOME}/bin/hirb.rb,是hbase命令行接口
1.1.2hbasemaster
执行类org.apache.hadoop.hbase.master.HMaster,启动或关闭HMaster
1.1.3hbaseregionserver
执行类org.apache.hadoop.hbase.regionserver.HRegionServer,启动或关闭RegionServer
1.1.4hbasethrift
执行org.apache.hadoop.hbase.thrift.ThriftServer,启动或关闭thrift服务
注:Thrift是facebook发起的轻量级跨语言的服务框架,现在在apache基金会下。
支持很多语言。Thrift有一个与具体编程语言无关IDL语言,用来描述服务接口,以及数据交换的格式,存储在.thrift文件中。
然后使用自带的编译器将thrift文件编译成cpp、python等语言的框架代码。
1.1.5hbaseavro
org.apache.hadoop.hbase.avro.AvroServer
Avro是一个数据序列化系统。
Avro提供了:
*丰富的数据结构。
*一个简约的、快速的、二进制数据格式。
*一个容器文件,用于存储持久数据。
*远程过程调用(RPC)。
*和其他动态语言的简单集成。存取数据文件或者使用RPC协议的时候不需要生成代码。代码生成只是作为静态类型语言的一个可选的优化项。
1.1.6migrate
执行org.apache.hadoop.hbase.util.Migrate,貌似系统迁移的功能
1.1.7zookeeper
执行org.apache.hadoop.hbase.zookeeper.HQuorumPeer,启动或关闭zookeeper服务
1.2start-hbase.sh启动hbase。先调用hbase-daemons.sh启动zookeeper,再调用hbase-daemon.sh启动master,最后调用hbase-daemons.sh启动regionserver
1.3hbase-daemons.sh
执行regionservers.sh,从${HBASE_CONF_DIR}/regionservers读取regionserver列表,
ssh到每台host上调用其hbase-daemon.sh脚本,在后台启动regionserver;
执行zookeepers.sh,调用org.apache.hadoop.hbase.zookeeper.ZKServerTool从classpath下读取zoo.cfg中的server列表
sh到每台host上调用其hbase-daemon.sh脚本,在后台启动zookeeper;
1.4hbase-daemon.sh
包装hbasemaster,regionserver,zookeeper等服务从后台启动
说了半天,其实核心的还是hbase脚本,所有功能最终都是调用的这个脚本