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

表在HBase中既不启用也不禁用,hbase,Hbase,我面临一个奇怪的问题。我通过API访问我的HBase表。在行刑的中途,我得到了一个没有为我的桌子“x”服务的区域。但我的HRegionServers运行良好 当我试图从HBase Shell中列出表时,我找不到我的表“x”。当我尝试禁用表“x”时,它抛出了一个TableNotEnabledException,当我尝试启用表“x”时,它抛出了一个TableNotDisabledException 附件是我得到的例外: hbase(main):002:0> disable 'x' ERROR

我面临一个奇怪的问题。我通过API访问我的HBase表。在行刑的中途,我得到了一个没有为我的桌子“x”服务的区域。但我的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> 
hbase(主):002:0>禁用“x”
错误:org.apache.hadoop.hbase.TableNotEnabledException:org.apache.hadoop.hbase.TableNotEnabledException:x
位于org.apache.hadoop.hbase.master.handler.DisableTableHandler.(DisableTableHandler.java:75)
位于org.apache.hadoop.hbase.master.HMaster.disableTable(HMaster.java:1154)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
在org.apache.hadoop.hbase.ipc.writeablerpcengine$Server.call上(writeablerpcengine.java:364)
位于org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1336)
以下是此命令的一些帮助:
开始禁用命名表:例如“hbase>禁用“t1”
hbase(主):003:0>启用“x”
错误:org.apache.hadoop.hbase.TableNotDisabledException:org.apache.hadoop.hbase.TableNotDisabledException:x
位于org.apache.hadoop.hbase.master.handler.EnableTableHandler.(EnableTableHandler.java:74)
位于org.apache.hadoop.hbase.master.HMaster.enableTable(HMaster.java:1142)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
在org.apache.hadoop.hbase.ipc.writeablerpcengine$Server.call上(writeablerpcengine.java:364)
位于org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1336)
以下是此命令的一些帮助:
启动命名表的启用:例如“hbase>启用“t1”
hbase(主):004:0>

我以前也遇到过类似的问题。问题是因为动物园管理员拿着桌子。 因此,我按照以下步骤手动删除了该表

  • 使用
    hbase zkcli
    命令进入hbase zookeper客户端模式
  • 使用命令删除表格
    Delete/hbase/table/x

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

    事件顺序:

  • 发生了一些事情,使区域服务器进入一个坏状态,在那里它被报告但无法访问
  • 试图在区域服务器处于错误状态时禁用表(当时我不知道)。收到RPC超时错误
  • 试图删除表格,出现错误“表格未启用或禁用”。HBase UI正在报告该表的“未知”压缩状态
  • 注意到一个失败的批量加载作业,该作业表示它无法到达特定的区域服务器
  • 重新启动的区域服务器
  • HBase UI现在将表报告为“无”以进行压缩,启用/禁用/删除在shell中工作的表


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

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

    二,。使用Delete/hbase/table/x命令删除表

    三,。使用Delete/hbase/table lock/x命令删除表


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

    一,。使用hbase shell命令输入hbase

    二,。使用以下命令删除处于过渡状态的表格区域


    删除所有'hbase:meta','XXX,Table_region'。

    以下步骤对我很有用:

  • 进入hbase shell
  • get'hbase:meta',''table:state'
  • 请注意上面的“值”。该值应为
    \x08\x00
    (启用)或
    \x08\x01
    (禁用)
  • put'hbase:meta'、''、'table:state'、“\b\0”
    以启用该表

  • 你好我发现我的x表被我的zookeeper持有,我使用上面的命令删除了该表!!但问题依然存在!!您可以使用以下命令清理元区域:hbase hbck-fixMeta-fixmassignments。我想它应该可以工作。我也遇到过这样的情况,删除/hbase/table/x并重新启动集群并没有做到这一点;但如果我在那之后执行毗瑟奴的建议,它就成功了。