这个问题其实很简单,但是费了我一些时间解决,所以记录一下。
昨天我打开hbase一建表就这样
ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2806)
at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2014)
at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:659)
at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:413)
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)
这错意思是master正在初始化,我当时心想"你咋这么多事呢,都开启这么久了还初始化",我直接百度这个错,网上有很多都是说与系统时间对不上,确实也是会有这种情况,但是有篇文章说最重要的还是看日志,所以我还是去翻了翻(路径hbase/logs/hbase-root-master-Commit-Master.log
)然后看到这么一个错
ERROR [ActiveMasterInitializationMonitor-1586765917518] master.HMaster: Master failed to complete initialization after 900000ms. Please consider submitting a bug report including a thread dump of this process.
# 翻译了一下:初始化失败超过了这么多秒,然后是“请考虑提交包含此进程的线程转储的错误报告”
什么鬼,真的比女人还麻烦
然后再百度一下这一句,有些文章说是因为以前装的其他版本的hbase在zookeeper残留了信息导致的,但是我没有装过其他版本的hbase啊😑
可是我想了想最近我把其中一个节点删了之后关了Hbase之后好像没打开过,然后再翻翻日志看到了这个
WARN [master/Commit-Master:16000:becomeActiveMaster] master.HMaster: hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1586765917250, server=commit-slave-1,16020,1582250983070}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined.
这个警告出现了被删除的那个节点的名字,因此我再去检查了一遍Hbase
和zookeeper
的配置文件,都已经改掉了,所以就大概知道其实应该就是百度上所说的zookeeper残留信息的问题。
所以切入到zookeeper/bin
,打开zookeeper的客户端./zkCli.sh
,使用get
命令,输入/hbase
就tab补齐一下回车就看到下面这个
[zk: localhost:2181(CONNECTED) 5] get /hbase-unsecure
cZxid = 0x500000022 #该节点创建(Create)时的id 下面的是时间
ctime = Thu Feb 06 17:31:44 CST 2020
mZxid = 0x500000022 #该节点修改(Modify)后的id 下面的是时间
mtime = Thu Feb 06 17:31:44 CST 2020
pZxid = 0x4700000c39
cversion = 34
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 12
我心想那就应该是了,我三月份删除的节点,信息没有改过来
所以我直接把这个东西删了😀
rmr /hbase-unsecure
然后重启之后再创建个表试试就正常了,日志也不报错了,回去zookeeper客户端康康
信息更新过来了。
删除节点之后还试过Hadoop的namenode崩了,忘记把那个怎么解决的记录下来了,删除节点之后很多东西都要改,挺麻烦的。