Hbase无法drop table

Version:HDP3.1.0-78

Hbase2.1.6

报错

  1. hbase(main):017:0* disable 'COC_CUSTOMER_GROUP_20201027'
  2. ERROR: Table COC_CUSTOMER_GROUP_20201027 is disabled!
  3. For usage try 'help "disable"'
  4. Took 1.2053 seconds
  5. hbase(main):018:0> drop 'COC_CUSTOMER_GROUP_20201027'
  6. ERROR: Table org.apache.hadoop.hbase.TableNotDisabledException: Not DISABLED; tableName=COC_CUSTOMER_GROUP_20201027, state=ENABLING
  7. at org.apache.hadoop.hbase.master.HMaster.checkTableModifiable(HMaster.java:2644)
  8. at org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure.prepareDelete(DeleteTableProcedure.java:238)
  9. at org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure.executeFromState(DeleteTableProcedure.java:91)
  10. at org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure.executeFromState(DeleteTableProcedure.java:58)
  11. at org.apache.hadoop.hbase.procedure2.StateMachineProcedure.execute(StateMachineProcedure.java:189)
  12. at org.apache.hadoop.hbase.procedure2.Procedure.doExecute(Procedure.java:965)
  13. at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.execProcedure(ProcedureExecutor.java:1723)
  14. at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.executeProcedure(ProcedureExecutor.java:1462)
  15. at org.apache.hadoop.hbase.procedure2.ProcedureExecutor.access$1200(ProcedureExecutor.java:78)
  16. at org.apache.hadoop.hbase.procedure2.ProcedureExecutor$WorkerThread.run(ProcedureExecutor.java:2039)
  17. should be disabled!
  18. For usage try 'help "drop"'
  19. Took 0.2507 seconds

解决办法

  1. hbase hbck -j hbase-hbck2-1.0.0-SNAPSHOT.jar setTableState 'COC_CUSTOMER_GROUP_20201027' DISABLED

新版本hbase setTableState 参数注释如下

  1. setTableState <TABLENAME> <STATE>
  2. Possible table states: ENABLED, DISABLED, DISABLING, ENABLING
  3. To read current table state, in the hbase shell run:
  4. hbase> get 'hbase:meta', '<TABLENAME>', 'table:state'
  5. A value of \x08\x00 == ENABLED, \x08\x01 == DISABLED, etc.
  6. An example making table name 'user' ENABLED:
  7. $ HBCK2 setTableState users ENABLED
  8. Returns whatever the previous table state was.

执行后,表状态正常,可以正常操作