hbase的RIT问题解决
1 RIT问题是什么
hbase的RIT全称呼为Region-In-Trasition。
Region-In-Trasition是hbase的一种变迁机制。
RIT问题是指例如在Region状态的变迁过程中(merge、split、assign、unssign等操作),出现了问题。
然后导致region的状态一直保持在RIT, hbase出现异常。
2 解决方式
2.1 hdfs 检测修复
有些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集群
2.2 hbck修复
通过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集群。