本文共 4246 字,大约阅读时间需要 14 分钟。
在中国HBase技术社区第十届meetup杭州站中,有赞数据开发工程师赵原向大家分享了HBase在有赞的产品定位,重点介绍了有赞HBase和相关管控平台的研发建设、以及在HBase 1.2.6版本之上所做的改造、改造原因以及给业务实践带来的价值。
以下内容根据演讲嘉宾视频分享以及PPT整理而成。
本次的分享主要围绕以下三个方面:
一、产品定位二、管控平台建设三、改造与业务实践四、未来展望一、 产品定位
有赞目前拥有自己的大数据平台团队,主要负责维护基础设施所有的基础组件,整体分为两方面:计算和存储。计算分为实时计算和离线计算,其中离线计算部署了Hive和Spark等,实时计算分别维护了Spark Streaming和Flink。目前,有赞使用的存储产品主要是HBase。
HBase在有赞的产品定位是存储,主要分为四方面:
• 在线存储:HBase提供多集群云端存储和在线实时访问功能。
• 离线存储:支持离线数据批量导入导出,非敏感数据的实时读取以及线上重要数据的冷备。• 监控数据存储:存储OpenTSDB组件获取的监控数据,监控数据源自有赞的日志系统“天网”。• Kylin存储:存储Kylin的准实时数据。下图展示了有赞基于HBase存储的集群规划,主要包括四个集群:
• 在线服务主、备集群:二者之间存在复制通路,互为主备;
• 离线集群:打通了与在线服务备集群之间的单项复制通路,可以做在线服务备集群重要数据的冷备;• 日志业务独立集群:日志业务量大,为避免影响其他线上业务,将其作为独立集群,专为日志服务。二、 管控平台
有赞在应用HBase之初面临一系列痛点问题:
为了解决上述的痛点问题,有赞开发了自己的管控平台。相应的,该平台包含以下四个模块:
业务管控系统
业务管控系统主要分为三个模块:
监控系统
管控平台之下的监控系统主要有以下功能:
•操作系统级别、HBase级别数据监控:相对于之前产品,该功能的优势在于指标分组,如读、写、存储、以及RegionServer逻辑分组,每一分组的界面可以直观展示相应的指标数据;
•复制延迟监控:该功能主要监控集群间复制通存在的复制延迟,展示最大复制延迟和平均复制延迟,用于支持最终一致性下SLA的确定,并提供延迟告警的数据。
•表级别监控:HBase 1.2.6版本Slave在向Master发送心跳数据时,会相应发送一部分监控数据,有赞在此基础上做了二次开发,使其发送更多类型的监控数据,如读写的TPS和吞吐等,监控数据进行汇总后存储在OpenTSDB中,按表展示,一目了然。
告警
监控系统收集的数据使告警变得更加轻松,针对不同的告警问题,如RIT和最大延迟等,都可以动态调整阈值,实现定制化告警,更加灵活。
效率工具
效率工具主要解决的是异步迁移和集群迁移的问题,支持以下几种方式:
下图展示了数据迁移的具体流程, 其中绿色代表数据通过前面介绍的几种方式进行异步迁移,粉色代表HBase之间通过Snapshot进行同步数据迁移,此外离线HBase与Hive之间已打通,二者之间的数据迁移更简单。
三、改造与业务实践
有赞在开始使用HBase的时候,2.0版本还不是很成熟,为了求稳,选择了1.2.6版本。该版本有很多功能不全,无法满足有赞当时的需求,因此有赞在应用HBase的过程中主要做了四部分改造:资源隔离、异构存储、资源隔离优化和Bug修复。
改造-资源隔离
该功能(参考HBASE-6721 patch)主要支持HBase层面的逻辑分组,将某些RegionServer划到一个分组,当表挂载在不同分组时,只在该分组做balance。这种方式从HBase层面上来讲相当于资源隔离,优点是降低管理成本,缺点是只是在HBase层面进行资源隔离,而非底层的HDFS层,实际在IO与网卡等层依然会相互影响。
改造-异构存储
虽然HDFS 2.6版本支持SSD存储介质,但是其成本相对较高,有赞通过改造异构存储功能(参考HBASE-14061 patch),实现指定重要的表存储到SSD中,具体策略是指定RegionServer存储HLog的格式(HOT,ONE_SSD或ALL_SSD)以及表格cf级别的存储方式。HLog的三种存储格式分别具备以下特点:
• HOT策略:将所有副本存储到SATA中,这种方式成本低,存储空间大,但吞吐较差;• ALL_SSD策略:将所有副本存储到SSD上,这种方式吞吐量高,但成本高;• ONE_SSD策略:兼容HOT策略和ALL_SSD策略,将本地副本存储在SSD,其余副本存储在SATA上,控制成本的同时,提升吞吐。改造-资源隔离优化
这部分功能主要优化前面提到的资源隔离问题,通过利用RSGroup结合异构存储,完成HBase层和HDFS层的双重隔离。SSD和SATA存储的副本分别属于不同的分组,达到完全的资源隔离,在不同的分组上放置重要程度不等的业务,在资源隔离的基础上,满足不同的SLA。
改造-Bug修复
有赞在应用HBase过程中修复了三个比较重要的bug:
业务实践
有赞已接入HBase的业务实践主要包括:粉丝详情,要求低延迟、高可用;调用链,要求重写低读,高吞吐
业务实践-粉丝详情
粉丝详情业务针对HBase的改造实践包括以下四个方面:
针对宕机问题,有赞开发了自己SDK,ha-hbase-client,可以简单认为是一个前端代理。它配置了两个底层的HBase集群(如下图所示),支持单次请求路由到备集群,然后重新访问主集群并进行健康检查;另外还支持熔断,当主集群完全不可用时,会将请求直接路由到备集群,不再访问第一个集群及健康检查。Ha-hbase-client的开发对业务方友好,业务方对底层无感知,降低了开发成本,保证了高可用性。
业务实践-调用链
调用链的业务诉求是高吞吐,尤其是写吞吐量很高,在写不发生阻塞的前提下对读写延迟不敏感。调用链业务在改造前使用的是多台Cassandra SSD机型组成的集群,存在一系列的痛点问题,如运维成本高、集群负载高、服务不稳定等。
通过调研发现,HBase很适合上述的调用链业务场景,因为HBase的写功能很强。具体实践过程中,有赞首先根据调用链业务的数据量级进行了预分区;同时将HDFS的副本数设置为2,减少磁盘使用量;最重要的一点是为了避免Major Compaction,除了进行预分区之外,还将Region大小设为128,同时进行估算预测调整,避免达到Split的阈值。
通过HBase实践,有赞使用更少的机器、更低的负载完成了对调用链的支持,解放了开发运维的时间,即使调用链流量翻倍,也可以较快的扩展,并且不会影响SLA。
四、未来规划
跟进社区,反馈社区
HBase 1.2.6在有赞已经使用了两年左右,目前不打算迁移到2.X版本,打算获取社区红利,将发现的问题、解决的bug、产出的patch反馈给社区。
服务更多的业务
未来将完善存储平台,开发更多的工具,接入更多的业务。
实时数仓
有赞计划在实时数仓方面发力,希望HBase不单纯做一个存储组件,而是与其他组件有机结合,成为实时数仓的重要组成部分。
转载地址:http://yihna.baihongyu.com/