hadoop - habse 创建表时提示:error: org.apache.hadoop.hbase.PleaseHoldException: master is initialzing

本文详细记录了解决HBase HMaster进程频繁挂掉及HRegionServer注册失败的问题过程。通过调整HDFS配置,清理Zookeeper中HBase的错误信息,并重启服务,成功解决了HBase的稳定性问题。

ps : 本次总结是因为自己踩了不少坑。特此总结一下。大部分结论在网络上也可能存在。。。

开发环境: 

       1. hadoop 3.2.0

       2. hbase-2.1.3

       3. zookeeper-3.4.13

 

环境搭建好了之后查看进程:

[centos@s110 hbase-2.1.3]$ jps
1810 NameNode
2516 NodeManager
2389 ResourceManager
9846 HRegionServer
10167 Main
1929 DataNode
18265 Jps
2155 SecondaryNameNode
10365 Main
8974 QuorumPeerMain
9679 HMaster

发现hadoop hbase 相关的进程都在。但是在过了几分钟之后,再次查看的时候HMaster 进程会自己挂掉。

有时候启动的时候,发现会有两个 HRegionServer。观察日志的时候发现HRegionServer 注册不上。

[centos@s110 soft]$ jps
3200 HRegionServer
1810 NameNode
3267 Jps
2516 NodeManager
3236 HRegionServer
2389 ResourceManager
1929 DataNode
2155 SecondaryNameNode
1566 QuorumPeerMain
2990 HMaster

查查hbase 相关日志发现:

WARN  [master/s110:16000:becomeActiveMaster] master.HMaster: hbase:meta,,1.1588230740 is NOT online; state={1588230740 state=OPEN, ts=1551952388155, server=s101,16020,1551860949953}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined.

该日志会有大批记录记录在hbase-centos-master-***.log 中。

在网上百度了好多方式。

最后处理的方式是:

重新修改 hdfs-site.xml 配置文件。

重点在指定的了: hbase.tmp.dir  ,hbase.zookeeper.property.dataDir,目录,确保用户有权限操作该目录。(ps 要是改目录下游数据,最好也清理了,原有数据可能会影响!)

如下是我本次的配置:

<configuration>
        <!-- 指定hbase在hdfs上存储的路径 -->
        <property>
            <name>hbase.rootdir</name>
            <value>hdfs://192.168.101.110:8020/hbase</value>
        </property>

        <property>
            <name>hbase.master</name>
            <value>hdfs://192.168.101.110:60000</value>
        </property>

        <property>
            <name>hbase.tmp.dir</name>
            <value>/home/centos/hbase/tmp</value>
        </property>

        <property>
            <name>hbase.zookeeper.property.dataDir</name>
            <value>/home/centos/hbase/zookeeper</value>
        </property>

        <!-- 指定hbase是分布式的 -->
        <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
        <!-- 指定zk的地址,多个用“,”分割 -->
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>192.168.101.110:2181</value>
        </property>

        <property>
           <name>hbase.zookeeper.property.clientPort</name>
           <value>2181</value>
        </property>

        <property>
            <name>hbase.unsafe.stream.capability.enforce</name>
            <value>false</value>
       </property>
</configuration>

2. 清理zookeeper相关hbase相应的信息。

1、进入zookeeper的bin目录;

2、执行客户端脚本:$sh zkCli.sh

3、查看Zookeeper节点信息: ls /

4、递归删除hbase节点:rmr /hbase

5、退出:quit

6、重启Zookeeper

#1、直接启动客户端脚本
$ zkCli.sh

#2、查看Zookeeper节点信息
[zk: localhost:2181(CONNECTED) 0] ls /

#3、递归删除hbase节点
[zk: localhost:2181(CONNECTED) 1] rmr /hbase

#4、退出客户端
[zk: localhost:2181(CONNECTED) 2] quit

#5、重启Zookeeper服务
$ zkServer.sh stop
$ zkServer.sh start

做完上述之后重启hbase  问题解决 ~!!!

问题分析:(ps : 后期收集查看原因总结归纳出来的。。。stackoverflow上也有同学这么归纳)

1. 在搭建环境过程中,反复启动hbase,zookeeper .

在hbase相应的目录中可能生成错乱的数据,在下次启动的时候,去读数据,倒是注册的时候老是连接不上注册中心。

hbase 对应注册不上的服务,采取重试的机制,所以导致HRegionServer 多次注册,在启动时进程可以查看出来。等重试到达一定次数时,还是失败进程会被推出。

2. zookeeper 搭建过过程中,改变hbase,或者多次未成功的注册。导致生产的目录不正常。当再次注册是,由于名字等信息高度类型被判定位同一个,实际上不是同一个。所以一直注册不成功。

 

end  ! 

如若写的不对请麻烦告我,不胜感激~~

### 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
发出的红包

打赏作者

Dream_bin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值