Hbase表无法disable
# 问题
查看表状态
hbase:003:0> is_enabled 'test_0104'
false
Took 0.0072 seconds
=> false
hbase:004:0> is_disabled 'test_0104'
false
Took 0.0061 seconds
=> false
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
发现表既不处于enabel
也不处于disable
查看元数据表该表状态
hbase:009:0> get 'hbase:meta','test_0104','table:state'
COLUMN CELL
table:state timestamp=2023-01-04T16:12:46.001, value=\x08\x02
1 row(s)
Took 0.0053 seconds
1
2
3
4
5
2
3
4
5
可以看到他的值是\x08\x02 (disabling),但是正常的值是\x08\x00(Enabled)或者\x08\x01(Disabled)
在Hbase webUI
中查看该表发现是处于disabling
# 通过list_locks查看是否上锁
hbase:011:0> list_locks
NAMESPACE(default)
Lock type: SHARED, count: 2
TABLE(test_0104)
1
2
3
4
5
2
3
4
5
发现表的确是锁住了
随后在WebUI中看到了RIT问题
Region-In-Transition说的是Region变迁机制,实际上是指在一次特定操作行为中Region状态的变迁。
# 解决方法
# 使用HBCK2工具修复
- 下载HBCK2代码
https://github.com/apache/hbase-operator-tools
git使用命令:git clone https://github.com/apache/hbase-operator-tools.git
- 修改适配的Hbase版本
修改pom.xml
中hbase.verion
版本号为我们集群的版本
- 编译打包
mvn clean package -DskipTests
1
打包后生成工具目录为hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.3.0-SNAPSHOT.jar
- 将工具上传到集群总任意目录
上传到能够执行hbase命令机器
- 工具使用方法
hbase hbck -j hbase-hbck2-${hbck2-version}.jar
或
hbase --config /etc/hbase-conf hbck -j hbase-hbck2-${hbck2-version}.jar
1
2
3
2
3
- 执行修复命令
hbase hbck -j hbase-hbck2-1.3.0-SNAPSHOT.jar setTableState 'test_0104' DISABLED
1
此时查看表的状态是恢复到了disable
参考:https://www.modb.pro/db/579496
上次更新: 2023/03/10, 20:58:04