hbase的RIT问题解决

hbase的RIT全称呼为Region-In-Trasition。
Region-In-Trasition是hbase的一种变迁机制。
RIT问题是指例如在Region状态的变迁过程中(merge、split、assign、unssign等操作),出现了问题。
然后导致region的状态一直保持在RIT, hbase出现异常。

有些RIT问题是由于hadoop的文件系统hdfs出现文件损坏或者丢失。
1查看损坏文件、当前hdfs的副本数

hadoop fsck /   

2更改已经上传文件的副本数,对于存在副本缺失问题(Under replicated blocks)的block,可以从剩下的1-2个副本,重新生成3个副本,从而找回了丢失的副本。

hadoop fs -setrep -R 3 /

3删除损坏文件(从namenode节点删除元信息和损坏文件。)

hdfs fsck -delete 

4看整个hdfs的健康情况

hadoop  dfsadmin -report

RIT(Region-In-Transition) 已经大大降低。

必要时需重启HBase和Hadoop集群

通过hbase hbck –repair操作完成修复(仅支持HBase1.x系列中RIT问题通常可以)。
但是在HBase2.x系列中,该命令还没有支持,所以暂时无法通过这种命令完成修复。结果如下
1查看hbase中损坏的block

hbase hbck

一连串的hbck将报告不一致的列表以及受影响的区域和表格的简要描述。使用该-details选项将报告更多细节,包括所有表格中所有分割的代表性列表。详情可以参考hbck使用说明

hbase hbck -details

meta表修复一

1.重新修复hbase meta表(根据hdfs上的regioninfo文件,生成meta表)

hbase hbck -fixMeta

2.重新将hbase meta表分给regionserver(根据meta表,将meta表上的region分给regionservere)
hbase hbck -fixAssignments
 

meta表修复二

当出现漏洞

hbase hbck -fixHdfsHoles  (新建一个region文件夹)
hbase hbck -fixMeta        (根据regioninfo生成meta表)

重启HBase集群。

随机文章