表在HBase中既不启用也不禁用

时间:2013-01-28 07:58:03

标签: hbase

我面临一个奇怪的问题。我通过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> 

5 个答案:

答案 0 :(得分:16)

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

  1. 使用hbase zkcli命令
  2. 进入hbase zookeper客户端模式
  3. 使用命令delete /hbase/table/x
  4. 删除表格

答案 1 :(得分:3)

以下步骤对我有用:

  1. 进入hbase shell
  2. rm -rf package-lock.json node_modules npm install
  3. 请注意上述“值”。该值应为get 'hbase:meta', '<AFFECTED_TABLE_NAME>', 'table:state'(启用)或\x08\x00(禁用)
  4. \x08\x01使表启用

答案 2 :(得分:1)


我在生产上也遇到过类似的问题。问题是特定的Hbase表元已损坏。所以我使用下面的方法从Zookeeper手动删除了表格

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

2。使用命令delete / hbase / table / x删除表

3。使用命令delete / hbase / table-lock / x

删除表


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

1。使用hbase shell命令进入hbase

2。使用以下命令删除处于过渡状态的表区域
   
删除所有'hbase:meta','XXX,Table_region。'

答案 3 :(得分:0)

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

事件顺序:

  1. 发生了一些事情,使得区域服务器陷入了报告状态但无法访问的糟糕状态
  2. 尝试在该区域服务器处于错误状态时禁用表(当时我不知道)。出现RPC超时错误
  3. 试图放弃桌子,得到错误&#34;桌子未启用或禁用&#34;。 HBase UI报告了“未知”。该表的压缩状态
  4. 注意到失败的批量加载作业表示无法访问特定区域服务器
  5. 重新启动的区域服务器
  6. HBase用户界面现在报告表格为“无”#39;用于压缩,启用/禁用/删除在shell中工作

答案 4 :(得分:0)

这一系列动作对我有帮助:

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

仅此而已!现在可以从 phoenix 删除该表。