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