开源组件Hbase之RIT故障修复
作为本际云服务器推荐网的小编小本本,为方便大家对故障处理有一个更好的理解,本文前半章简单扼要的介绍一下Hbase的相关信息,后半章是笔者工作中遇到的故障处理分享。

Hbase起源及架构原理
HBase是一个开源的非关系型分布式数据库,运行于HDFS文件系统之上,为Hadoop提供类似于BigTable规模的服务。HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。
HBase的实现包括三个主要的功能组件:库函数,一个Master主服务器以及许多个Region服务器。主服务器Master负责管理和维护Hbase表的分区信息,维护Region服务器列表,分配Region,负载均衡。Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求。客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。客户端并不依赖Master,而是通过Zookeeper来Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小。
Hbase故障处理分享
业务侧报障大数据平台,发现业务系统请求量明显偏低,查看Hbase监控页面,发现18号节点不在服务中,通过终端查看HRegionServer进程在,查看系统日志后,发现18号节点连接异常,导致当前节点Hbase异常,另外Hbase出现RIT,会影响Hbase的写入。
尝试重启,但请求量仍然很低,后来将18号的Regionserver下线,效果不理想,最后决定做Hbase在线修复(18号已下线),通过以下步骤进行修复:
1.hbasehbck检查输出所有ERROR信息,每个ERROR都会说明错误信息,
2.hbasehbck-fixTableOrphans先修复tableinfo缺失问题,重新生成tableinfo文件,
3.hbasehbck-fixHdfsOrphans修复regioninfo缺失问题,根据region目录下的hfile重新生成regioninfo文件,
4.hbasehbck-fixHdfsOverlaps修复region重叠问题,merge重叠的region为一个region目录,并从新生成一个regioninfo,
5.hbasehbck-fixHdfsHoles修复region缺失,利用缺失的rowkey范围边界,生成新的region目录以及regioninfo填补这个空洞,
6.hbasehbck-fixMeta修复meta表信息,利用regioninfo信息,重新生成对应metarow填写到meta表中,并为其填写默认的分配regionserver,
7.hbasehbck-fixAssignments把这些offline的region触发上线,当region开始重新open上线的时候,会被重新分配到真实RegionServer上,并更新meta表上对应的行信息。
修复近三小时,修复完成后,重启了Hbase,RIT异常解决了,再次检查出现了新的问题,元数据缺失和region重叠,通过delete命令删除后再执行步骤2~7修复后,Hbase状态为正常,故障修复完毕。
总结:Hbase在线修复之前首先保证停掉相关业务,并且确保所有region都在线,否则修复可能会产生重复region。另外确保hbase根目录下文件没有损坏丢失,如有,先移除掉,再修复。移除命令:hdfsfsck-delete。
以上是笔者工作中遇到的一个关于region故障的处理分享,后续将继续带来关于Hbase日常运维的总结分享,敬请期待。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5824.html
