大数据时代必修技能 阿里HBase又放出了哪些大招? - 阿里技术
前言
HBaseCon是Apache HBase官方举办的技术会议,主要目的是分享,交流HBase这个开源分布式大数据存储的使用和开发以及发展。HBaseCon发起于2012年。通常HBaseCon的举办地是在美国,这是HBaseCon第一次在亚洲举行,命名为Apache HBaseCon 2017Asia。而且这次会议举办地选择在中国深圳,也足以见得HBase在中国的火爆程度和中国开发者们对HBase社区所做的卓越贡献。
Apache HBase是基于Apache Hadoop构建的一个分布式、可伸缩的Key-Value数据库,它提供了大数据背景下的高性能的随机读写能力。做为最早研究、使用和二次开发HBase技术的中国公司,阿里巴巴从2010年就开始使用HBase,经过近7年的发展,现在采用HBase存储的业务已经超过1000+,拥有了上万台的HBase集群规模,在HBase上存储的数据已达PB级。
秉承开源和分享的精神,阿里把HBase的实践经验和改进不断回馈HBase社区,比如说Bucket Cache和Reverse Scan等功能,给HBase技术发展带来了非常深远的影响。同时,也给HBase社区培养了2名PMC和2名Committer,阿里在HBase社区的影响力可见一斑。那么这次HBaseCon 2017 Asia。阿里派出了一位HBase PMC和2位Committer,还有两位资深的HBase开发,给大家带来了十足的干货。
阿里干货系列
一、强同步复制
传统的HBase主备集群同步使用的方案是异步复制,这使得主备集群数据之间会有短暂的数据不同步现象。用户为了灾备,不得不放弃强一致模型。没法放弃强一致语义的用户,必须自己写一套复杂的逻辑来保证主备集群之间数据的读写一致性。阿里的HBase技术专家天引,在此次的HBaseCon Asia上给大家带来了强同步复制方案。
据天引介绍,强同步复制方案采用了主备并发写和RemoteLog技术,使得在同城网络条件下同步复制相对于异步复制仅有2%的吞吐量下降。当一个请求到达主库后,并发写本地和备库,到达备库的同步写不需要走完整的写入路径,而是直接写入RemoteLog,降低同步写开销与延时。除了同步链路外,还有一套异步链路将数据从主库复制到备库,因此正常情况下不需要回放RemoteLog的数据到备库,在主库不可服务的情况下,只需要回放RemoteLog中那些还没有被异步复制链路同步到备库的数据,异步复制只有几秒钟的数据延迟,这保证了可以在很短的时间内完成从主库到备库的切换。
此方案在大会现场引起了强烈反响,很多HBase用户表示这是他们期待已久的功能,希望能尽快使用上。天引表示此功能目前基于阿里内部分支实现、运行及完善,未来将会回馈给社区。
二、SQL on HBase
阿里HBase服务了大量的内部用户,并持续有新用户接入。但是使用HBase的用户有很大一部分是从传统的SQL数据库转过来的,HBase的rowkey设计和API的使用习惯对于他们来说并不友好。为了降低这些转型用户的使用门槛,阿里在HBase上引入了SQL层。来自阿里的资深HBase开发工程师天穆,给大家详细讲解了如何玩转SQL on HBase。
通过优化,现在在阿里使用SQL访问HBase和原生API的速度已经相差无几,而且在SQL语法上,创造性地支持HBase多版本和时间戳等NoSQL才具有的功能。
另外,在HBase上同时支持了全局二级索引和本地二级索引。使用户可以在多列上建立索引,简化了业务的设计,提升了请求效率,降低了使用成本。
三、跨集群分区拷贝
HBase上通常承载着海量的数据,而在日常生产过程中,随着业务的发展和公司数据中心的规划等原因,这些海量数据需要经常搬迁,这通常对于运维来说是一个非常头疼的问题。来自阿里的HBase社区Committer正研,分享了阿里跨集群分区拷贝的场景和成熟解决方案。
正研首先介绍了在阿里内部常见的需要数据拷贝的场景,比如说新建数据中心,HBase集群需要整体搬迁到新的机房;又比如说不同机房内的HBase集群的增量数据同步,可以用replication来解决,但是对于存量数据,目前还没有比较高效的方案;另外还一个常见场景就是数据恢复,而传统的HBase备份还原工具都没法控制数据恢复的范围。
因此,阿里研发了Range Data Copy功能内置在HBase中,提供了一个简单高效,而且能够自动处理各种错误情况和灾难恢复的数据拷贝功能,使用这个功能拷贝一张200TB的表到另外一个集群,所需时间不到5小时。
四、读写链路优化
在阿里使用HBase的过程中,对HBase本身做了非常多的读写性能优化。来自阿里的HBase社区PMC绝顶和Committer天照,一起给大家分享了阿里在这方面所取得的一些成果。
1、使用Netty替代HBase原生的RPC server,大大提升了HBaseRPC的吞吐能力,降低了延迟 ;
2、 引入新的HFileBlock编码格式,把顺序搜索变成了二分查找,提高了HBase随机读的能力
3、拆分写链路,释放阻塞的handler资源,提高了HBase写的吞吐能力 ;
来自阿里的这些优化黑科技,使HBase的能力又更上一个新台阶。并且这些优化和功能目前已经回馈给了社区,所有的HBase用户都能在新版本的使用获得这些技术红利。
总结
除了阿里带来的技术分享,现场许多其他公司也都带来了他们对HBase做出的改进和使用经验。比如说小米实现了AsyncClient,填补了HBase没有原生异步API的缺口;知乎使用kubernetes自动扩容缩容HBase集群,灵活地适应业务高速发展和瞬息万变;烽火网络隔离读写资源使近线查询更加稳定等等。
除了上述提到的这几个亮点技术分享,此次HBaseCon大会的每一个session都非常精彩,给大家带来了一场又一场思维碰撞的盛宴。Apache HBase“掌门人”Michael Stack也参加了此次会议,并与HBase开发者们举行了一次圆桌会议,共同探讨HBase的现状和未来。
这次HBaseCon的火爆程度,直接展示了国内企业和开发者们对HBase热情和期望。HBaseCon大会不仅给HBase的使用者们带来了最新鲜的技术进展,互通有无,吸收其他公司的先进经验;也成为HBase使用者和开发者之间沟通的桥梁,能让开发者们看到业界动态,用户的需求,共同把HBase打造成一个更加易用,更高性能,更稳定的大数据存储。这次HBaseCon大会是一个很好的开端,期望HBaseCon Asia越办越好,给大家带来更多的干货!
写在最后
如果你对大数据在线存储、对HBase感兴趣,或者是想更好地使用HBase、开发更NB的产品,欢迎联系我(正研,zhengyan.ywl@alibaba-inc.com),一起交流,互相学习!
作者简介
杨文龙,花名正研,阿里巴巴存储技术事业部资深研发,HBase开源社区Committer。开源技术爱好者,对分布式存储系统的设计、实践具备丰富的大规模生产的经验。