问题:
I am facing a weird problem. I was accessing my HBase tables through an API. Midway during execution I got a RegionNotServing for my table 'x'. But My HRegionServers were working fine.
When I tried to list the tables from HBase Shell I could not find my table 'x'. When I tried to Disable my table 'x' it threw a TableNotEnabledException and when I tried to Enable my table 'x' it threw me a TableNotDisabledException.
Attached is the Exeption I got: 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.(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.(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>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先:
I had a similar issue before. The problem was because Zookeeper was holding the table. So I deleted the table manually by following the below steps
- Enter into hbase zookeper client mode using 'hbase zkcli' command
- Delete the table using the command 'delete /hbase/table/x'
然后:
hbase hbck -fixMeta -fixAssignments
---------------------
不错:http://arnon.me/2013/01/killing-hbase-zombie-table/