Hbase服务故障恢复后快速解决region负载不均衡的问题

此解决方案的适用场景:

hbase故障前region平均的分布在所有的regionserver上面,故障发生后,HbaseMaster挂掉,部分或全部regionserver挂掉,当hbase个组件都恢复后,会发现大量的region是在少数regionserver上,如果你集群开启了region自动均衡,需要等待特别长的时间,特别是hbase集群规模很大时,比如我们一个项目的hbase集群有200个regionserver,region数目达到了10W+,如果要等hbase自己让region负载均衡,需要几乎一天时间,而且期间业务没法正常进行,否则单个regionserver读写请求并发根本扛不住,这是需要一个快捷的办法使得region快速的均匀分布在各个regionserver上

解决方案:

1、停掉Hbase的主备Master

2、删除HDFS上的/hbase/MasterProcWALs文件,文件路径不同集群可能存在差异,我们集群是/app/hbase/data/MasterProcWALs(删除前请先备份到别处)

3、删除zk里面的region-in-transition节点信息 rmr  /hbase-unsecure/region-in-transition

3、启动两个HbaseMaster

4、启动后查看hbase webUI页面发现region的分布几乎和故障前的一样

原理:

/hbase/MasterProcWALs文件用来保存master执行过程程序的状态保存,用于中断恢复执行使用,master在启动时会去读取这个文件,因为在恢复hbase的时候,rs启动后会有先后顺序,region会被分别到先启动的rs上,这样导致所有rs在恢复后,大部分region被标记需要region-in-transition,region又需要进行负载均衡移动,删除MasterProcWALs文件后和zk的/hbase-unsecure/region-in-transition,master在启动时,直接从故障前正常服务状态启动即可!

你可能感兴趣的:(hbase,hbase)