HBase Table Enabling issue

本文分析了一个HBase表在enable过程中遇到的问题,导致表状态处于中间状态,无法正常使用。问题出现在hbase 0.98.0.2.1.3.7-18-hadoop2版本。主要原因是bulk阶段超时,HMaster在enabling状态下不再接受新的enable操作。解决方案是通过重启HBase Master,将enabling状态的表设置为enabled。

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

有的时候HBase的表在enable的过程中出现问题,导致最终状态处于中间状态,而这个时候客户端又没有办法使用这个表。这里分析一下一个case

env

hbase 0.98.0.2.1.3.7-18-hadoop2
版本比较老

Issue

如下的表的状态就处于中间状态

hbase(main):011:0> is_enabled 'prod_eglesprk_tasks'
false
0 row(s) in 0.0680 seconds

hbase(main):012:0> is_disabled 'prod_eglesprk_tasks'
false
0 row(s) in 0.0510 seconds

从页面上看是这样的

这里写图片描述

表的状态是什么

通过如下代码可以查询出来当前处于enabling状态的表的名字,这段代码源自于hmaster如何查询table状态的代码

可以确认这个表处于enabling状态

Configuration conf = HBaseConfiguration.create();
conf.set("ha.zookeeper.quorum", "127.0.0.1:2181");
String node = "/hbase/testSecuritySingleSuperuser";
ZooKeeperWatcher watcher = new ZooKeeperWatcher(conf, node, null, false);


Set<TableName> disablingOrDisabled = ZKTable.getEnablingTables(watcher);
for (TableName tb : disablingOrDisabled){
    System.out.println(tb.getNameAsString());
}

核心pom.xml

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.5</version>
        <exclusions>
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值