HBase管理与监控——强制删除表

在用phoenix创建Hbase表时,有时会提示创建失败,发现Hbase中又已创建成功,

但这些表在进行enabledisabledrop都无效,也无法删除:

hbase(main):004:0> enable 'TERMINAL_DETAIL_DATA' 
##如下异常:
ERROR: org.apache.hadoop.hbase.TableNotDisabledException: TERMINAL_DETAIL_DATA
        at org.apache.hadoop.hbase.master.handler.EnableTableHandler.prepare(EnableTableHandler.java:121)
        at org.apache.hadoop.hbase.master.HMaster.enableTable(HMaster.java:1654)
        at org.apache.hadoop.hbase.master.MasterRpcServices.enableTable(MasterRpcServices.java:572)
        at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:44233)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2034)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
        at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
        at java.lang.Thread.run(Thread.java:745)

网上搜了一堆资料,找到以下解决办法进行处理:

  • 删除ZK中的数据
ls /hbase/table
rmr /hbase/table/TERMINAL_ORDER_DATA
  • 删除HDFS上的数据
hadoop fs -ls /hbase/data/default/TERMINAL_ORDER_DATA
hadoop fs -rm -r /hbase/data/default/TERMINAL_ORDER_DATA
  • 删除meta表信息
在meta表查询数据:
scan 'hbase:meta', {STARTROW=>'TERMINAL_ORDER_DATA,0', ENDROW=>'TERMINAL_ORDER_DATA,9'}

通过rowkey删除,记得删除把该表的meta数据删除干净(server,serverstartcode,regioninfo,seqnumDuringOpen)
delete 'hbase:meta', {STARTROW=>'DEV_TERMINAL_DETAIL_DATA,0', ENDROW=>'DEV_TERMINAL_DETAIL_DATA,9',COLUMN=>'info:server'}

--我用的是删除整行记录,不知是不是这里的问题,导致不成功 deleteall
'hbase:meta', 'TERMINAL_ORDER_DATA,1,1568875708811.3168f0db04c8ba74e178bca382255f69.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,2,1568875708811.477a4ddb088a3693c0091521b19c76b8.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,3,1568875708811.25fd956f82d7e9f255db5edbbd233424.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,4,1568875708811.1214182080ddbeb2ffe166c97ab4bf97.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,5,1568875708811.71326bc45285e6ce4bb3fbf3701db36d.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,6,1568875708811.9bf957a71f33e441b2a6838b63f2627e.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,7,1568875708811.5c459432d8cbf3240af531f02d0fa676.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,8,1568875708811.1040cce5b163b10280d12fb9062ccd2c.' deleteall 'hbase:meta', 'TERMINAL_ORDER_DATA,9,1568875708811.c7bd43f03f1cad14eacc8ae4f05358c9.'
  • 这时候去hbase中查看,发现还有该表,但是对该HBase表操作提示没有表信息了,这时候重启regionserver就解决问题了,如果是正式环境就不要重启了,直接创建一下该表就能正常使用了

问题就出现在这里,我按照上面的方法处理了后,重启hbase竟然起不来了,不知是哪一步出问题了。搞得最后清空了所有hbase的数据才弄好。在这里先记录一下,后续在分析。

如果要是在生产环境中就需要谨慎的去操作了。

参考 http://stackoverflow.com/questions/14557742/table-is-neither-enables-nor-disabled-in-hbase,通过hbase hbck -fixMeta -fixAssignments.也无法修复!

参考的资料:

https://blog.xiaoxiaomo.com/2016/11/12/HBase-%E5%BC%BA%E5%88%B6%E5%88%A0%E9%99%A4%E8%A1%A8/

原文地址:https://www.cnblogs.com/caoweixiong/p/11769561.html