HBase的異常(二)

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章