HBase的异常(二)

来源:互联网 发布:2016网络诈骗事件 编辑:程序博客网 时间:2024/05/22 07:01
ERROR: org.apache.hadoop.hbase.TableNotDisabledException: event_logsat 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_logsat 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/tabletable        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> listTABLE                                                                                              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