我们正在使用HBase 0.94.7和两个区域服务器。我们有一个始终处于转型期的地区。当我执行hbase hbck
时,发现存在不一致。但是hbase hbck -repair
和hbase hbck -fix
都不会有所帮助,因为这个地区处于转型期。以下是hbase hbck
ERROR: Region { meta => LogTable,\x00\x00\x01\xE8\x00\x00\x01@\x07B\x02\xCF\xEF\xCE>.,1374573828457.f41ff2fae25d1dab3f16306f4f995369., hdfs => hdfs://master:8020/hbase/LogTable/f41ff2fae25d1dab3f16306f4f995369, deployed => } not deployed on any region server.
ERROR: There is a hole in the region chain between \x00\x00\x01\xE8\x00\x00\x01@\x07B\x02\xCF\xEF\xCE>. and \x00\x00\x01\xFC\x00\x00\x01@\x08\x1E1\x0F\x07&\xCE\x11. You need to create a new .regioninfo and region dir in hdfs to plug the hole.
ERROR: Found inconsistency in table LogTable
ERROR: Found lingering reference file hdfs://master:8020/hbase/LogTable/f41ff2fae25d1dab3f16306f4f995369/l/d9c7d33257ae406caf8d94277ff6d247.fbda7904cd1f0ac9583e04029a138487
ERROR: Found lingering reference file hdfs://master:8020/hbase/LogTable/f41ff2fae25d1dab3f16306f4f995369/l/b4f4b4ba52f041d5b9ee03318cac7fb7.fbda7904cd1f0ac9583e04029a138487
ERROR: Found lingering reference file hdfs://master:8020/hbase/LogTable/f41ff2fae25d1dab3f16306f4f995369/l/ee7dd42b15fe4622882ec6a7a773e01f.fbda7904cd1f0ac9583e04029a138487
当我尝试hbase hbck -repair
时,由于转换中的区域,它会无限循环:
INFO util.HBaseFsckRepair: Region still in transition, waiting for it to become assigned: {NAME => 'LogTable'....}
我不知道如何解决这个问题,任何人都可以帮忙吗?
由于
答案 0 :(得分:0)
试试这个:
hbase org.apache.hadoop.hbase.util.Merge <br/>
用法:
bin/hbase merge [table-name] region-1 region-2
答案 1 :(得分:0)
这看起来你有一个失败的区域分割,请参阅[HBASE-8052](https://issues.apache.org/jira/browse/HBASE-8502)了解更多详情。
此错误会引用已在HDFS中移动的父区域。要修复,只需删除HBCK输出中列出的参考文件,例如hadoop fs -rm hdfs://master:8020/hbase/LogTable/f41ff2fae25d1dab3f16306f4f995369/l/d9c7d33257ae406caf8d94277ff6d247.fbda7904cd1f0ac9583e04029a138487
。
一旦错误的引用消失,应该自动分配区域。根据我的经验,您可能必须从shell进行分配,尽管只需要一两分钟就可以重新分配该区域。然后再次运行hbase hbck -fix
以确认没有其他不一致。