ITPub博客

首页 > 大数据 > Hadoop > 记录2018年底最后1次HBase故障维护

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

原创 Hadoop 作者:hackeruncle 时间:2019-02-12 16:20:40 0 删除 编辑

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,是需要修复的

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

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

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

在2019第2天上班,

找时间特此记录一下,

好记性不如烂笔头。

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

如有不当,欢迎留言交流


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

下一篇: 没有了~
请登录后发表评论 登录
全部评论
主要从事大数据平台产品的技术工作; 负责基于Spark、Flink生产开发及性能调优; 负责对公司的集群的部署、监控、调优和运营; 主导我司的数据平台0到1及实时中间件项目开发; 此外,精通Java、Shell、Python编程; 且荣获2016年IBM的Spark大赛全球第四名,中国区域第一名。

注册时间:2015-01-03

  • 博文量
    186
  • 访问量
    301247