记录2018年底最后1次HBase故障维护

1.背景

我司某套HBase阿里云生产环境,主要是为了pinpoint服务。

业务抛错: Can't get the location

当我拿到同事求助的机器IP时,已经时间过去 1 day,登录机器执行:
bin/hbase-daemon.sh start regionserver
命令启动RS,始终起不来,日志没有什么可用信息。

2.杀死此时一直在分割日志(split)的HMaster进程,然后启动HBase

ps -ef|grep hbase

kill -9 pid

尝试启动hbase
bin/start-hbase.sh

发现依然无法启动rs进程,但是在master log发现日志如下:

2019-01-30 11:53:35,791 INFO  [AM.ZK.Worker-pool2-t10] master.RegionStates: Onlined 8d8737a9a489d9458e94d224ad4ca035 on hadoop001,16201,1548820383721
2019-01-30 11:53:35,791 INFO  [AM.ZK.Worker-pool2-t10] master.RegionStates: Offlined 8d8737a9a489d9458e94d224ad4ca035 from hadoop001,16201,1548819734962

日志频繁的刷新onlined,offlined信息,这时我们应该尝试优雅重启RS。

3.优雅重启rs的hadoop001节点

而不是暴力kill rs进程后再去使用hbase-daemon.sh脚本单独启动rs进程。
应该使用以下命令:

bin/graceful_stop.sh --restart --reload --debug hadoop001

4.查看进程,且建表测试

jps 命令发现进程都起来了,
hbase shell 命令端进去建表hbase_test测试,其实应该可用了,恢复了。

5.但是开发那边依旧抛错

unable to find region for in ApplicationIndex after 35 tries.

说明无法发现该key的region,是需要修复的

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

6.一点点的经验

6.1先执行 hbase hbck 命令。检查输出所有ERROR信息,每个ERROR都会说明错误信息。

6.2再执行 hbase hbck -fixHdfsHoles 命令。修复region缺失,利用缺失的rowkey范围边界,生成新的region目录以及regioninfo填补这个空洞。

6.3再执行 hbase hbck -fixAssignments -fixMeta 命令。
把这些offline的region触发上线,当region开始重新open 上线的时候,会被重新分配到真实的RegionServer上 , 并更新meta表上对应的行信息。再修复meta表信息,利用regioninfo信息,重新生成对应meta row填写到meta表中,并为其填写默认的分配regionserver。

6.4最后执行 hbase hbck 命令。发现状态输出:OK

gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==

6.5 hbase shell 命令客户端scan这个key,正常输出结果。

7.开发那边测试校验调整,最后发来感谢

在2019第2天上班,

找时间特此记录一下,

好记性不如烂笔头。

以上就是本人的故障解决思路,

如有不当,欢迎留言交流


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30089851/viewspace-2625256/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30089851/viewspace-2625256/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值