场景描述:由于某些原因(断电、数据文件被人为变动等),导致某一张表(bigtable)无法使用,drop表bigtable长时间后报错,list表中已经不存在bigtable,然而scan 'BIGTABLE',报错如下:
ERROR: org.apache.hadoop.hbase.NotServingRegionException: Region BIGTABLE,,1434443376614.5dc960a46809996a5619060b8e507b59. is not online on dmp-dn-002,60020,1434614612996
查看日志显示:
handler.OpenRegionHandler: Failed open of region=BIGTABLE,\x0F,1434443376615.b589effc1fc458cb17bf3ca99a110050., starting to roll back the global memstore size.
java.lang.IllegalStateException: Could not instantiate a region instance.
可能原因1:
zookeeper引起的,通常这种情况往往是在你正在运行一个进程正在操作hbase数据库的时候,hbase进程被杀掉或hbase服务被停掉所引起的,如果是hbase自身管理的zookeeper
1.将hbase的配置项hbase.zookeeper.property.dataDir值中的目录下的文件全都删除掉
2.cd /hbase目录/bin
hbase zkcli
delete /hbase/table/bigtable
3.删除文件系统中的bigtable文件
hadoop fs -rmr /hbase/data/default/bigtable
4.删除该表在HBase系统表.META.中的记录:
scan 'hbase:meta', {STARTROW=>'BIGTABLE', LIMIT=>30} (limit数字为该表的region数,如果不确定,可以手动调整,直到结果列表全是表bigtable的row)
scan列表如下:
BIGTABLE,,1434086168008.e882ec2ed3dfd9d06 column=info:seqnumDuringOpen, timestamp=1434086168550, value=\x00\x00\x00\x00\x00\x00\x00\x01
9cb47846ea9d132.
BIGTABLE,,1434086168008.e882ec2ed3dfd9d06 column=info:server, timestamp=1434086168550, value=dmp-dn-001:60020
9cb47846ea9d132.
BIGTABLE,,1434086168008.e882ec2ed3dfd9d06 column=info:serverstartcode, timestamp=1434086168550, value=1434076943193
9cb47846ea9d132.
BIGTABLE,,1434443376614.5dc960a46809996a5 column=info:regioninfo, timestamp=1434443257437, value={ENCODED => 5dc960a46809996a5619060b8e507b59, NAME => 'BIGTABLE2,,143
619060b8e507b59. 4443376614.5dc960a46809996a5619060b8e507b59.', STARTKEY => '', ENDKEY => '\x01'}
BIGTABLE,,1434443376614.5dc960a46809996a5 column=info:seqnumDuringOpen, timestamp=1434443377081, value=\x00\x00\x00\x00\x00\x00\x00\x01
619060b8e507b59.
BIGTABLE,,1434443376614.5dc960a46809996a5 column=info:server, timestamp=1434443377081, value=dmp-dn-002:60020
619060b8e507b59.
BIGTABLE,,1434443376614.5dc960a46809996a5 column=info:serverstartcode, timestamp=1434443377081, value=1434423684200
619060b8e507b59.
.....
根据rowkey,删除对应的row
delete '.META.',BIGTABLE,,1434086168008.e882ec2ed3dfd9d069cb47846ea9d132.','info:seqnumDuringOpen'
delete '.META.',BIGTABLE,,1434086168008.e882ec2ed3dfd9d069cb47846ea9d132.','info:server'
delete '.META.',BIGTABLE,,1434086168008.e882ec2ed3dfd9d069cb47846ea9d132.','info:serverstartcode'
delete '.META.',BIGTABLE,,1434086168008.e882ec2ed3dfd9d069cb47846ea9d132.','info:regioninfo'
重启hbase,即可。

当遇到HBase表bigtable因异常情况无法使用,尝试drop操作长时间报错时,可检查日志发现NotServingRegionException。解决步骤包括:清理Zookeeper数据,删除HDFS中对应表的数据,从.HBASE.META.表中删除表记录,最后重启HBase服务。

被折叠的 条评论
为什么被折叠?



