Hbase 建表时报错 ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing

本文记录了解决HBase启动及表创建时遇到的Master初始化异常问题,通过检查Zookeeper残留信息并清理,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个问题其实很简单,但是费了我一些时间解决,所以记录一下。
昨天我打开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.

这个警告出现了被删除的那个节点的名字,因此我再去检查了一遍Hbasezookeeper的配置文件,都已经改掉了,所以就大概知道其实应该就是百度上所说的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崩了,忘记把那个怎么解决的记录下来了,删除节点之后很多东西都要改,挺麻烦的。

### HBase PleaseHoldException 'Master is initializing' 的解决方案 当遇到 `org.apache.hadoop.hbase.PleaseHoldException: Master is initializing` 错误,通常HBase 主节点(HBase Master)正在初始化过程中未能成功完成其启动流程。以下是可能的原因以及对应的解决方法: #### 可能原因及解决措施 1. **未清理之前的元数据** 如果之前安装过不同版本的 HBase 或者集群重启后未正确关闭服务,则可能导致 ZooKeeper 中残留旧版 HBase 的元数据。这些遗留的数据会干扰新实例的正常运行[^4]。因此可以尝试手动清除 ZooKeeper 和 HDFS 上的相关数据目录来解决问题。 - 清理 ZooKeeper 数据:定位到本地存储路径下的 `/hbase/version-2/` 文件夹并将其移除。 ```bash rm -rf /path/to/zookeeper/data/version-2/ ``` - 删除 HDFS 中保存的 HBase 数据: ```bash hdfs dfs -rm -r /hbase/ ``` 2. **配置文件不一致或损坏** 配置文件中的某些参数设置不当也可能引发此问题。例如 site.xml 文件内的地址映射错误、端口号冲突等问题都需仔细核查[^3]。重新核对所有的 XML 设置项是否匹配当前环境需求尤为重要。 3. **资源竞争或硬件故障** 当存在多个进程试图同访问相同的数据库记录也会抛出类似的异常消息。另外还需注意服务器本身的健康状况——磁盘空间不足、内存泄漏等情况均会影响系统的稳定性[^2]。议监控系统性能指标以排除潜在瓶颈因素。 4. **网络连接不稳定** 不良的网路条件同样会造成通信延迟甚至断开链接的现象发生,在这种情形下客户端请求到达间超出预期范围就会触发超机制进而返回此类错误提示信息[^1]。优化网络架构设计有助于缓解这一难题。 通过以上几个方面的排查与调整应该能够有效应对大部分场景下的 “Master is Initializing报错情况 。如果经过上述处理仍然无法恢复正常工作状态 ,则考虑升级至最新稳定发行版或许会有帮助 。 ```python # 示例 Python 脚本用于验证 HBase 连接状态 (仅作参考用途) from happybase import Connection try: connection = Connection('localhost') tables = connection.tables() print(f"HBase Tables: {tables}") except Exception as e: print(f"Error connecting to HBase: {e}") finally: if 'connection' in locals(): connection.close() ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值