启动Hbase shell后执行list命令报错: Master is initializing
问题出现原因:
可能由于集群的机器时间不同步时,盲目的开启hbase造成的。
此外,集群机器时间不同步,还会导致集群开启异常,比如,开启的节点个数变少以及Hmaster节点启动一段时间后自动关闭等问题,解决方法如下。
hbase(main):001:0> list_namespace
NAMESPACEERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2811)
at org.apache.hadoop.hbase.master.HMaster.getNamespaces(HMaster.java:3107)
at org.apache.hadoop.hbase.master.MasterRpcServices.listNamespaceDescriptors(MasterRpcServices.java:1261)
at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:418)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)
解决方法:
1.先把HDFS根目录下的Hbase文件删了
先给该文件夹操作权限
hdfs dfs -chmod -R 777 /hbase
删除hbase文件夹
hdfs dfs -rm -r /hbase
2.将zookeeper客户端下的hbase文件也删除
进入zookeeper客户端
[root@linux01 ~]# /opt/apps/zookeeper-3.4.6/bin/zkCli.sh
删除hbase文件,并退出。
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper, doit17, hbase]
[zk: localhost:2181(CONNECTED) 1] rmr /hbase
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper, doit17]
[zk: localhost:2181(CONNECTED) 3] quit
3.关闭和重启Hbase
stop-hbase.sh
start-hbase.sh
如果此时一键关闭stop-hbase.sh命令长时间处于等待中,如下图所示,
[root@linux01 ~]# stop-hbase.sh
stopping hbase...............................................................................................................................................
........................................................................................................^C
则先关闭Hmaster,
[root@linux01 ~]# hbase-daemon.sh stop master
在一键关闭
[root@linux01 ~]# stop-hbase.sh
之后在一键开启即可(前提是HDFS和zookeeper进程开着),使用jps查看进程。
在Hbase的使用中一定要注意时间的同步问题。