hbase:表测试在meta中不存在,但是有一个znode运行hbck修复不一致(失败)

h7appiyu  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(927)

我最近加了一张table test 开始使用hbase时。
由于一些问题,我决定重新安装hbase。
在重新安装并运行hbase shell之后,我尝试了:

hbase(main):004:0> list
TABLE
0 row(s) in 0.0070 seconds

=> []

所以没有table。现在我试着添加表 test ```
hbase(main):005:0> create 'test', 'testfamily'

ERROR: Table already exists: test!

我查看了日志文件,发现了以下条目
2018-06-21 07:53:30646警告[procedureexecutor-2]procedure.createtableprocedure:表测试在meta中不存在,但有一个znode。运行hbck修复不一致。
我查了一下,得到了以下信息

$ hbase hbck test
Table hbase:meta is okay.
Number of regions: 1
Deployed on: my_IP,16201,1529567081041
0 inconsistencies detected.
Status: OK

我想知道有没有办法去掉 `znode` 用手吗?
kjthegm6

kjthegm61#

我也遇到了同样的问题,它显示了以下错误
该表在meta中不存在,但有一个znode。运行hbck修复不一致。
答案只在错误中显而易见。
由于该表存在于zookeeper仲裁(分布式/伪分布式模式)或单个zookeeper节点(对于独立模式)中,但在hbase中不存在,因此会导致不一致。
因此,解决方案是从zookeeper节点中删除表。
这样做-
打开zookeeper客户端。 bin/zkCli.sh 你可以看到所有的表是由Zookeeper挑选的 ls /hbase/table 尝试查找错误中提到的表名并运行 rmr /hbase/table/<table_name> 。这将从zookeeper状态中删除该表。
再次尝试从hbase创建表。创建表时不会出现任何问题。

相关问题