现象:
hbase 在集群修改参数重启的过程,出现master 一直在init初始化状态。无法启动。region部分也是一直报NotServingRegionException。
hbase Proedure出现大量阻塞,原因为master未能启动时候,活跃的online region无法正常进行处理

habse的请求出现突然增大,但是没见region恢复,可以看到大量请求进来

log大量主要需要解决报错信息

分析原因:
1、分析下来region部分下线了,导致大量请求重试,大量请求使得request增大。region无法自己恢复,导致一直维持大量请求状态。
2、master无法恢复active 导致Procdurs无法正常进行处理
3、region数大量减少,从800减少到了600个
解决目标:
1、恢复master
2、重新上线offline 的 region
解决过程:
1、hbaseshell assigns 可以进行region委派上线,但是需要master是active状态。因此这个命令用不了。
2、hbase安装时候自带了hbck,但是该命令在2.0后只能查,不能用。报错说推介使用hbck2,但是2.1之内无法正确使用hbck2,这点是比较纠结的点。hbck无法用,hbase2.1版本内,无法用官方提供的hbase-operator-tools-master 1.0.0代码编译成hbck2工具包。
下图是工具包git的说明2.0.3之前是无法使用的和2.1.1。实际上下载包用默认版本编译需要2.1.6最好,小于这个版本会编译失败,类出现缺失

3、到这里用本身hbase自带命令肯定不好使。只能两个方案一、手动调整hbase meta表,让region上线。(风险极大,生产慎重,看网上按理是调整完,清理zk表可以恢复)。二、使用HBCK2进行恢复,本身官方提供安全可靠,人为中间操作较少失误率低。
采用二方法进行调试,但是环境用hbase2.0.2,采用2.1.6打包上去环境操作肯定会出现包不兼容的状态。于是采用另一个思路,选择hbase-operator-tools-master版本最接近线上的版本,然后打包使用maven fat jar模式进行打包,让线上环境jar包脱离jar包环境。
线上git地址https://github.com/apache/hbase-operator-tools/tags,能找到的最低版本为rel1.0.0REL (Release) 版本,orc为预发版本一般不首选。

4、idea进行jar包编译,目标是要编译出hbase-hbck2的jar工具包

确认最低jar包版本,为2.1.6(尝试过修改过较多版本和使用外网仓库,发现不得低于这个)

5、进行fat jar打包,给pom文件加入打包插件
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptors>
<!--<descriptor>src/main/assembly/src.xml</descriptor>-->
</descriptors>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
6、对所有依赖去掉<scope>provided</scope>,代表编译生成包会把本地以来jar包类一起打成一个大包。

7、将包上传到hbase环境,进行hbase环境变量配置,加入到classpath中 vim /bin/hbase,加到class_path后面

8、执行hbase classpath看看是否添加正确和成功,如果路径显示拼接有问题需要调整,可以看到已经添加到环境变量中

9、执行手动委派region,这一步每次委派记得要观察master是否让region正常上线,委派名字写的不对master会不断报错委派region不能找到。(region name不包含后面的.符号)
hbase org.apache.hbase.HBCK2 -d -s assigns regionname
HBCK2还有大量运维命令比如给region强行 解锁或者强制关闭Proedure状态。但是不是完成匹配版本,或者版本差异过大不是不得已情况不建议这么用。尽量选择大版本接近的工具进行打包。使用本地类运行
10、NotServingRegionException解决后hbase master就恢复active了,委派region时候,建议可以先将日志报错region下线尝试。让后面堵塞region先自动上线。完成之后,最后把下线region 重新上线,达到全部region完成上线,效率会更高。不然需要手动一个一个上线。
浙公网安备 33010602011771号