资讯专栏INFORMATION COLUMN

开源组件Hbase之RIT故障修复

IT那活儿 / 792人阅读
开源组件Hbase之RIT故障修复

为方便大家对故障处理有一个更好的理解,本文前半章简单扼要的介绍一下Hbase的相关信息,后半章是笔者工作中遇到的故障处理分享。



       Hbase起源说明        



HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为Hadoop提供类似于BigTable规模的服务。因此,它可以容错地存储海量稀疏的数据。

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。



Hadoop生态为什么需要Hbase


  • Hadoop可以很好地解决大规模数据的离线批量处理问题,但是受限于HadoopMapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。


  • HDFS面向批量访问模式,不是随机访问模式。


  • 传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题(分库分表也不能很好解决)。


  • 传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。



HBase与传统关系数据库区别


  • 1、数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。

  • 2、数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。

  • 3、存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。

  • 4、数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。

  • 5、数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。

  • 6、可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。



        Hbase架构原理      



HBase的实现包括三个主要的功能组件:

  • 1、库函数:链接到每个客户端

  • 2、一个Master主服务器

  • 3、许多个Region服务器

主服务器Master负责管理和维护Hbase表的分区信息,维护Region服务器列表,分配Region,负载均衡。

Region服务器负责存储和维护分配给自己的Region,处理来自客户端的读写请求。

客户端并不是直接从Master主服务器上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。

客户端并不依赖Master,而是通过Zookeeper来Region位置信息,大多数客户端甚至从来不和Master通信,这种设计方式使得Master负载很小。




上面介绍了Hbase的相关信息,下面就笔者工作中遇到的一个关于region故障进行分享。业务侧报障大数据平台,发现业务系统请求量明显偏低,查看监控发现Hbase的请求量很低,甚至为0,产生告警,下面开始诊断过程:




软件版本:



Hbase

组件版本:

Hbase:1.2.1





问题定位


通过查看Hbase监控页面,发现18号节点不在服务中,远程连接比较卡顿,通过终端查看HRegionServer进程在,查看系统日志:

重启后,日志变为正常

综上判断可能是因为网络通信原因导致18号节点异常。

Hbase日志:显示18号,region已下线


Hbase监控页面:RIT问题

综上,可判断由于18号节点连接异常,导致当前节点Hbase异常,另外Hbase出现RIT,会影响Hbase的写入。



解决过程


尝试重启,但请求量仍然很低,后来将18号的Regionserver下线,效果不理想,最后决定做Hbase在线修复(18号已下线),Hbase状态:


步骤:

  • 1. hbase hbck 检查输出所以ERROR信息,每个ERROR都会说明错误信息。


  • 2. hbase hbck -fixTableOrphans 先修复tableinfo缺失问题,根据内存cache或者hdfs table 目录结构,重新生成tableinfo文件。


  • 3. hbase hbck -fixHdfsOrphans 修复regioninfo缺失问题,根据region目录下的hfile重新生成regioninfo文件。


  • 4. hbase hbck -fixHdfsOverlaps 修复region重叠问题,merge重叠的region为一个region目录,并从新生成一个regioninfo。


  • 5. hbase hbck -fixHdfsHoles 修复region缺失,利用缺失的rowkey范围边界,生成新的region目录以及regioninfo填补这个空洞。


  • 6. hbase hbck -fixMeta 修复meta表信息,利用regioninfo信息,重新生成对应meta row填写到meta表中,并为其填写默认的分配regionserver。


  • 7. hbase hbck -fixAssignments 把这些offline的region触发上线,当region开始重新open 上线的时候,会被重新分配到真实RegionServer上 , 并更新meta表上对应的行信息。另外,当执行完所有修复步骤后仍然有:ERROR: Empty REGIONINFO_QUALIFIER found in hbase:meta。执行:hbase hbck -fixEmptyMetaCells。


修复近三个小时,修复完成后,重启了Hbase,RIT异常解决了,再次检查出现了新的问题:

1、元数据缺失

2、region重叠


再利用之前的修复命令无法修复。

解决方法:

针对1:

通过执行hbasehbck-fixEmptyMetaCells

修复ERROR:EmptyREGIONINFO_QUALIFIER found in hbase:meta


针对2:

deletehbase:meta,DBN_YTO,601889669485241086,1536145292692.f47aaa41740bf9d99b1cc19b3de29d9b.,info:regioninfo

deletehbase:meta,DBN_YTO,601889669485241086,1546409804387.7795e5726f6f9e018cfa2fe93b20556d.,info:regioninfo

hdfsdfs -rm-r/hbase/data/default/DBN_YTO/f47aaa41740bf9d99b1cc19b3de29d9b

hdfsdfs -rm-r/hbase/data/default/DBN_YTO/7795e5726f6f9e018cfa2fe93b20556d

最后执行:

hbasehbck -fixAssignments-fixMeta -fixHdfsHoles

Hbase状态为正常,到此Hbase修复完毕。



总结


Hbase在线修复之前首先保证停掉相关业务,并且确保所有region都在线,否则修复可能会产生重复region,另外确保hbase根目录下文件没有损坏丢失,如果有,先移除掉,再修复。

移除命令:

hdfsfsck -delete

本次分享结束,后续我将继续带来关于Hbase日常运维的总结分享,我们下次再见。


文中相关参考资料来源:

链接:https://www.jianshu.com/p/53864dc3f7b4  作者:Michaelhbjian来源:简书

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130218.html

相关文章

  • HBase 托管Hadoop集群 UHadoop

    摘要:如果频繁遇到这个问题可能是的参数或者其他方面设置的不合理,需要调整一下。 HBase本篇目录HBase某一个表数据无法写入,也无法读取,从WebUI界面查看到有多个Region状态为region in transaction是因为?读取、写入数据时,为什么找不到region?HBase某一个表数据无法写入,也无法读取,从WebUI界面查看到有多个Region状态为region in tran...

    ernest.wang 评论0 收藏183
  • 「回顾」网易数据基础平台建设

    摘要:特点有聚合运算相关算法,时序数据库相对于关系型数据库没有特别复杂的查询,最常见的使用类型是宽表使用,在此基础上做一些聚合算法插值查询。 首先简单介绍一下网易杭州研究院情况简介,如下图所示: showImg(https://segmentfault.com/img/bVbni6K?w=720&h=285); 我们公司主要从事平台技术开发和建设方面,工作的重点方向主要在解决用户在数据治理中...

    sevi_stuo 评论0 收藏0
  • HBase运维基础——元数据逆向修复原理

    摘要:本文就运维的原理基础开始入手,重点讲解数据完整性,以及元数据逆向工程恢复数据完整性的原理方法。小结本文介绍了运维基础原理中的数据完整性以及逆向元数据修复原理,并举例介绍两个逆向修复元数据的工具和实用执行步骤。 背景鉴于上次一篇文章——云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等。总的来...

    ctriptech 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<