1

我最近test在开始使用 HBase 时添加了一个表。

由于一些问题,我决定重新安装 HBase。

重新安装并运行 HBase shell 后,我尝试了:

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

=> []

所以没有桌子。现在我尝试添加表格test

hbase(main):005:0> create 'test', 'testfamily'

ERROR: Table already exists: test!

我查看了日志文件并找到了以下条目

2018-06-21 07:53:30,646 WARN [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手动去除?

4

1 回答 1

0

我也遇到了同样的问题,它显示以下错误

该表在 meta 中不存在,但有一个 znode。运行 hbck 以修复不一致。

答案仅在错误中很明显。

不一致是由于表存在于您的 zookeeper quorum(分布式/伪分布式模式)或单个 zookeeper 节点(对于独立模式)中但不存在于 hbase 中。

所以解决方案是从 zookeeper 节点中删除表。

为此——

  1. 打开动物园管理员客户端。bin/zkCli.sh
  2. 您可以通过以下方式查看 Zookeeper 挑选的所有表格ls /hbase/table
  3. 尝试找到错误中提到的表名并运行rmr /hbase/table/<table_name>。这将从zookeeper的状态中删除该表。
  4. 尝试从 Hbase 再次创建表。它将毫无问题地创建。
于 2019-04-25T10:20:48.873 回答