码迷,mamicode.com
首页 > 其他好文 > 详细

hbase设置ttl后出现坏块,重启后master abort 问题梳理

时间:2020-04-29 23:53:35      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:也会   修复   替换   node   错误   图片   梳理   main   ttl   

1. 查看日志,找到出错位置。

  源码位置:hbase-0.94.11\src\main\java\org\apache\hadoop\hbase\master\AssignmentManager.java   1879

  技术图片

 

   可以看到,问题是由于把某个region进行transit过程中出现了错。

  造成的原因很可能就是重新设置了ttl造成数据块中造成了部分损坏。

 

2.  既然数据块损坏,那么重启后mater为什么会起不来直接abort,从上面代码可以看到这属于源码的一个Bug,按理说数据块损坏,不应该影响mater的正常启动。

3. 因此调研了0.94.27版本,可以看到对此处进行了优化。

  技术图片

 

   在此版本中,当region在transition过程中出现了错误,但并不会影响master的正常启动。

 

4.  由于数据存储在hdfs中,hbase对于hdfs来说就是一个客户端,我们可以放心对hbase0.94.11备份,用0.94.27替换。

 

5. 替换后,用hbase自带的工具  hbfc 修复,可以看到损坏的region。

 

6. 通过hdfs界面,找到损坏的region对应的数据块,直接删除损坏的数据块。

 

7. 删除损坏的数据块后,再进行hbase的hbfc修复。

 

8. master成功启动。且可正常运行。

 

9. 由于删除hdfs的损坏数据块时,使用的hdfs自带的工具,在删除的同时也会删除namenode对应的元数据。

 

10. 但是hbase并不知道你删除了坏数据对应的region,因此你需要对hbase的.META.表进行修复,去掉损坏的region元数据,否则当有人访问此元数据对应的region会出错。

 

总结完毕

 

hbase设置ttl后出现坏块,重启后master abort 问题梳理

标签:也会   修复   替换   node   错误   图片   梳理   main   ttl   

原文地址:https://www.cnblogs.com/dhName/p/12805590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!