ApacheHBase是一个在线服务型数据库,原生支持Hadoop特性,是基于Hadoop的可扩展性和灵活性进行数据处理应用的不二选择近年来在世界范围内发展迅速。在评估任何数据存储产品时,高可用性(HA)是一个核心考虑指标,也是核心业务应用的先决条件。然而,硬件故障、网络和电源中断,以及许多不可预知的故障总是在挑战HBase的高可用性。从2011年开始,阿里就开始了对HBase的应用研究和探索之路,目前已经拥有上万个HBase集群。经过近五年的努力,阿里HBase在性能优化、功能提升、高可用提升等方面积累了大量经验。在WOT2016互联网运维与开发者大会现场,记者独家专访了阿里巴巴集团技术支持部系统工程师肖冰,探讨提升阿里巴巴HBase高可用的技术细节。嘉宾简介肖冰,阿里巴巴集团技术支持部系统工程师,加入公司后一直从事阿里巴巴HBase集群的一线运维工作,负责保障整个阿里巴巴集团HBase集群的稳定性和高可用。HBase集群。承担了HBase大推进核心业务单元转型、MTTR实施、混合存储实施等重要工作。据肖冰介绍,阿里HBase团队的职责分工主要分为两个方向。一是运维团队,主要帮助阿里内部各业务方制定存储方案,负责后期的稳定护航;另一个是HBase源码开发团队,主要是在代码层做HBase的优化,提升HBase的整体性能。两个团队紧密合作,结合阿里巴巴自身的业务场景和特点,深度定制和完善社区HBase,在解决方案、稳定性保驾护航、开发支持等方面为集团内各业务部门提供一整套NoSQL服务。阿里HBase主要用来存储大量的线上关键业务数据,比如我们常用的支付宝钱包中的用户账单、消费记录、通讯录中的联系人,以及淘宝购物时卖家给买家发送的物流明细等。总的来说,Hbase是面向数据量大、吞吐量高、存储和读取相对简单的业务。其优势在于服务能力的快速横向扩展,单个集群可以支持百万级甚至千万级的TPS和QPS。阿里HBase集群的高可用之路阿里HBase的运维监控集中在两个层面。首先是监控告警系统,主要用于监控集群自身的健康状况,比如网络、CPU消耗等。另一种是业务层面的监控,即根据业务需求在代码中设置很多信息采集的锚点,统计一段时间内某个集群的TPS、QPS、网络IO。通过这两个层面的监控配合,可以准确定位并解决问题。为使集群可用率达到四个九的标准,阿里HBase主要通过单机故障快速恢复机制、跨机房跨区域集群部署、快速透明的主备切换来克服这些问题。缩短节点宕机恢复速度节点宕机、大请求等都会直接影响读写请求,威胁集群的可用性。肖冰表示,他们通过数据并发恢复,将整个集群的宕机时间从一开始的一个小时左右缩短到十五、六分钟以内。上拉动作。任何技术方案,从设计到实际实施,都需要不断的试错和调优,肖冰等人也是如此。“我们业务刚上线的时候,理论上恢复速度应该比以前的方法快。但很多时候,数据恢复的速度比我们预想的要慢很多,甚至在某些场景下速度还不如过去,我们需要根据实际情况不断优化。”比如在进行并发数据恢复时,如果正常用户请求和恢复数据都写入,这两个写请求会竞争资源,导致整个集群的恢复速度大大减慢。为了解决这个问题问题,阿里HBase优化了很多细节,比如设置限位开关,考虑到业务数据要恢复,先恢复写的部分,通过设置开关,外部流量无法进入集群,从而避免了资源争用对集群的影响数据恢复;再比如redbuffer设置的优化,在写入redbuffer时,如果redbuffer设置过大,也可能影响恢复速度。非常消耗系统资源,一个典型的例子是ScanwithaFilter,这个Filter会过滤掉大量的数据,导致Next操作访问数百或th数以千计的块。当大部分块都在内存中时,这个Scan会消耗大量的CPU资源。在解决大请求方面,肖冰也给出了两条优化建议:?限制大请求的资源消耗,让正常的请求都能获取到资源。通过睡眠实现目标;?为客户端中断已经超时的请求,继续运行这种请求是没有意义的。中断请求释放资源。容灾部署Hbase目前的集群容灾主要采用两种方式。首先是同城主备倒换的容灾。客户端通过配置ZK集群地址和ParentZnode访问HBase。为了实现客户端在主备集群之间的无缝切换,使用虚拟ParentZnode(VZnode)代替物理ParentZnode。VZnode中存储的内容是实际的物理ParentZnode,通过VZnode指向不同的物理Node,实现客户端在主备集群之间的无缝切换。二是异地容灾。通过多地集群部署,同时在多地完成数据同步,提供存储服务。未来的优化方向在采访的最后,肖冰与记者分享了阿里HBase未来的优化方向,主要会着力推动运维自动化和虚拟化部署。具体来说,一是将运维变更、资源申请、性能评估等日常运维工作完全自动化,提高运维效率。另一方面,目前HBase的部署由物理机部署改为虚拟节点部署,以更好地通过虚拟化提高资源利用率和资源调动速度。
