ERROR: org.apache.hadoop.hbase.TableNotDisabledException: event_logs
at org.apache.hadoop.hbase.master.HMaster.checkTableModifiable(HMaster.java:2098)
at org.apache.hadoop.hbase.master.handler.TableEventHandler.prepare(TableEventHandler.java:83)
at org.apache.hadoop.hbase.master.HMaster.deleteTable(HMaster.java:1844)
at org.apache.hadoop.hbase.master.HMaster.deleteTable(HMaster.java:1854)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42265)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
hbase(main):006:0> disable 'event_logs'
ERROR: org.apache.hadoop.hbase.TableNotEnabledException: event_logs
at org.apache.hadoop.hbase.master.handler.DisableTableHandler.prepare(DisableTableHandler.java:100)
at org.apache.hadoop.hbase.master.HMaster.disableTable(HMaster.java:2007)
at org.apache.hadoop.hbase.master.HMaster.disableTable(HMaster.java:2018)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42269)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Here is some help for this command:
Start disable of named table:
hbase> disable 't1'
hbase> disable 'ns1:t1'
報錯:ERROR: org.apache.hadoop.hbase.TableNotDisabledException: event_logs
ERROR: org.apache.hadoop.hbase.TableNotEnabledException: event_logs
問題分析:在進行disable操作的過程中,Ctrl+C退出,disable操作沒有完成,導致,disable和enable操作都報錯。HBase中表的元數據都是存放在zookeeper中的,所以可以通過zookeeper查看錶的情況或者修復。
解決:
1、如果想要刪除表
⑴進入zookeeper客戶端(在zookeeper安裝目錄下操作)
$ bin/zkCl.sh
⑵查看錶
[zk: localhost:2181(CONNECTED) 0] ls /
[consumers, config, hbase, admin, brokers, zookeeper, controller_epoch]
[zk: localhost:2181(CONNECTED) 1] ls /hbase
[meta-region-server, backup-masters, region-in-transition, draining, table, table-lock, namespace, hbaseid, online-snapshot, replication, recovering-regions, splitWAL, rs]
[zk: localhost:2181(CONNECTED) 2] ls /hbase/table
table table-lock
[zk: localhost:2181(CONNECTED) 2] ls /hbase/table
[hbase:meta, event_logs, hbase:namespace]
[zk: localhost:2181(CONNECTED) 3]
⑶刪除表
[zk: localhost:2181(CONNECTED) 4] ls /hbase/table
[hbase:meta, event_logs, hbase:namespace]
[zk: localhost:2181(CONNECTED) 5] delete /hbase/table/event_logs
[zk: localhost:2181(CONNECTED) 6] ls /hbase/table
[hbase:meta, hbase:namespace]
2、如果上述操作沒用,可以使用局部修復
如果出現數據不一致,修復時要最大限度的降低可能出現的風險,使用以下命令對region進行修復風險較低:
⑴hbase hbck -fixAssignments
修復region沒有分配(unassigned),錯誤分配(incorrectly assigned),以及多次分配(multiply assigned)的問題;
⑵hbase hbck -fixMeta
刪除META表裏有記錄但HDFS裏沒有數據記錄的region ;
添加HDFS裏有數據但是META表裏沒有記錄的region到META表;
⑶hbase hbck -repairHoles
等價於:hbase hbck -fixAssignments -fixMeta -fixHdfsHoles
⑷爲了節省時間我們可以操作指定表,只需要在命令後面加上表名;
這裏可以用命令(在hbase安裝目錄下操作):hbase hbck -fixAssignments -fixMeta event_logs
$ bin/hbase hbck -fixAssignments -fixMeta event_logs
再次進行disable操作:hbase(main):001:0> list
TABLE
event_logs
1 row(s) in 2.2950 seconds
=> ["event_logs"]
hbase(main):002:0> disable 'event_logs'
0 row(s) in 1.5520 seconds