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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM