supervisor监控hbase不成功,是因为supervisor启动的程序必须是非daemon的启动方式,之前的文章已经反复提过好几次这个问题,但是${HBASE_HOME}/bin/start-hbase.sh的启动脚本,实际上是调用了hbase-daemon.sh的daemon启动脚本,所以这里supervisor启动hbase后,hbase进程的状态仍然是hbase (exit status 0; expected),是因为无法监控hbase进程,但是不影响hbase的正常启动和使用
使用hbase shell登录HBase服务器进行操作
# 通过ssh远程连接使用admin账号远程登录HBase的Docker容器
$ cd /software/hbase-0.98.19/bin/
$ ./hbase shell
2016-06-3006:03:57,427 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>'for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.19-hadoop2, r1e527e73bc539a04ba0fa4ed3c0a82c7e9dd7d15, Fri Apr 2219:07:24 PDT 2016
hbase(main):001:0>
# 查询所有的Table
hbase(main):001:0> list
# 创建新表
hbase(main):001:0> create 'test','name'0 row(s) in0.5780 seconds
=>Hbase::Table - test
# 再次查询所有的Table
hbase(main):001:0> list
TABLE
test
1 row(s) in0.0100 seconds
=> ["test"]
浏览器查看
# 查看HBase:
http://10.211.55.4:60010/master-status
启动hbase可能会报错 Address already in use
master:java.net.BindException: Address already in use
master: at sun.nio.ch.Net.bind(Native Method)
master: at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:124)
master: at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:59)
master: at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:52)
master: at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:111)
master: at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130)
master: at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.runZKServer(HQuorumPeer.java:73)
master: at org.apache.hadoop.hbase.zookeeper.HQuorumPeer.main(HQuorumPeer.java:63)
# 报错的原因是Zookeeper的端口被占用了或者Zookeeper已经启动了。
export HBASE_MANAGES_ZK=true
# 这个参数表示启动hbase之前自动启动zk# 解决的办法有2种:1.启动hbase的之前kill掉所有的zk进程,让hbase启动zk
2.将参数HBASE_MANAGES_ZK 改成false
# 在hbase之前手动启动zk# 我这里使用的是方式一,可能之前zk的2181端口被其他应用占用了,所以kill掉所有占用2181端口的进程,再启动hbase就好用了