10

我面临一个奇怪的问题。我正在通过 API 访问我的 HBase 表。在执行过程中,我的表“x”得到了 RegionNotServing。但我的 HRegionServers 工作正常。

当我尝试从 HBase Shell 中列出表时,我找不到我的表“x”。当我尝试禁用我的表“x”时,它抛出了一个 TableNotEnabledException,当我尝试启用我的表“x”时,它抛出了一个 TableNotDisabledException。

附件是我得到的例外:

hbase(main):002:0> disable 'x'

ERROR: org.apache.hadoop.hbase.TableNotEnabledException: org.apache.hadoop.hbase.TableNotEnabledException: x
        at org.apache.hadoop.hbase.master.handler.DisableTableHandler.<init>(DisableTableHandler.java:75)
        at org.apache.hadoop.hbase.master.HMaster.disableTable(HMaster.java:1154)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
        at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1336)

Here is some help for this command:
Start disable of named table: e.g. "hbase> disable 't1'"


hbase(main):003:0> enable 'x'

ERROR: org.apache.hadoop.hbase.TableNotDisabledException: org.apache.hadoop.hbase.TableNotDisabledException: x
        at org.apache.hadoop.hbase.master.handler.EnableTableHandler.<init>(EnableTableHandler.java:74)
        at org.apache.hadoop.hbase.master.HMaster.enableTable(HMaster.java:1142)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:364)
        at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1336)

Here is some help for this command:
Start enable of named table: e.g. "hbase> enable 't1'"


hbase(main):004:0> 
4

5 回答 5

18

我以前也有类似的问题。问题是因为 Zookeeper 拿着桌子。所以我按照以下步骤手动删除了表格

  1. hbase zkcli使用命令进入 hbase zookeper 客户端模式
  2. 使用命令删除表delete /hbase/table/x
于 2013-01-28T08:12:45.870 回答
4

以下步骤对我有用:

  1. 进入hbase shell
  2. get 'hbase:meta', '<AFFECTED_TABLE_NAME>', 'table:state'
  3. 注意上面的“价值”。该值应为\x08\x00(Enabled) 或\x08\x01(Disabled)
  4. put 'hbase:meta','<AFFECTED_TABLE_NAME>','table:state',"\b\0"使表启用
于 2020-03-11T10:56:21.260 回答
1


我在生产中遇到过类似的问题。问题是特定的 Hbase Table Meta 损坏。所以我使用下面的方法从 zookeeper 中手动删除了表

1. 使用 hbase zkcli 命令进入 hbase zookeper 客户端模式

2. 使用命令 delete /hbase/table/x

删除表 3. 使用命令 delete /hbase/table 删除表-锁/x


执行上述命令后,重新启动 Hbase 但问题仍然出现,因此我使用以下命令从 Hbase 系统表中删除了 Hbase 表的区域

1. 使用 hbase shell 命令进入 hbase

2. 使用以下命令删除卡在过渡状态的表区域

deleteall ' hbase:meta','XXX,Table_region.'

于 2019-11-22T02:37:35.033 回答
0

我刚遇到这个问题,结果发现区域服务器已启动,但由于某种原因无法访问。我没有尝试调试它,而是重新启动了区域服务器并修复了所有问题。

事件顺序:

  1. 发生了一些事情使区域服务器进入报告状态但无法访问的错误状态
  2. 试图在该区域服务器处于错误状态时禁用表(当时我不知道)。收到 RPC 超时错误
  3. 试图删除表,得到错误“表未启用或禁用”。HBase UI 报告该表的“未知”压缩状态
  4. 注意到一个失败的批量加载作业,它说它无法到达特定的区域服务器
  5. 重新启动区域服务器
  6. HBase UI 现在将表报告为“无”以进行压缩,启用/禁用/删除在 shell 中工作
于 2015-06-12T15:16:29.420 回答
0

这一系列的行为对我有帮助:

  • $HBASE_HOME/bin/hbase shell- 打开 hbase 外壳
  • hbase(main):003:0> list-输入列表命令以确保表存在
  • hbase(main):004:0> enable "table name"- 启用表格

就这样!现在可以从phoenix中删除该表。

于 2021-07-13T04:47:53.200 回答