概述
云HBase2.0也就是我们即将要上线的ApsaraDB for HBase2.0。它不仅兼容开源HBase2.0,也承载着阿里多年大规模HBase使用的技术积淀,还有广大公有云用户喜欢的商业化功能。在大数据量场景中已经具有如此优势的云HBase2.0,如果还能search呢?
技术简介
云HBase2.0上的search是基于最新版本的solr7.3.x研发。数据通过replication准实时的同步到solrcloud中,利用solr实现数据的检索。具体过程如下:
- 通过配置文件或者SQL中指定要同步的索引列以及分词器等信息,建立HBase与solr表之间的映射关系。
- 当有HBase中发生数据操作(插入/更新/删除)时,对应的操作数据将会被捕获,转化为doc写入solrcloud中。
- 索引列作为全文索引进行检索。先检索solr中对应的索引数据,拿到所有符合条件索引数据的value, 也就是对应HBase表中rowkey时,再对HBase主表中的数据做过滤,最后获取到查询结果。
以上过程可参考下图:
架构优势
当HBase有了search能力,不仅能解决非rowkey的索引问题,也补齐了HBase后缀模糊匹配,分词检索的能力。
索引数据的同步方案目前有两种, 分别是使用HBase Coprocessor的同步方案和利用replication的异步方案。目前我们使用异步方案的原因是,对HBase集群影响最小,而且此方案经过多次优化,数据同步速度也能接近准实时。
除了兼容目前最高版本的HBase和solr的优势以外,相对现在社区已有的同类方案,还有以下优点:
- 云端的自动化运维和专家诊断,让系统更加稳定。
- 支持存储计算分离,solr索引数据存储在oss,降低成本。
- 我们目的是为HBase提供内嵌的search能力,能通过易用的SQL对HBase的非rowkey列进行检索。我们不仅仅支持search,以后也会扩展地理空间索引。
应用场景
某交通数据中心,每天会从各个路口摄像头实时采集大量的车牌号数据,并存储到HBase中。上层业务有以车牌号为条件,模糊查询出相关车主信息的需求。而由于每天实时写入的数据多达几亿条之多,同时涉及大量包含和后缀查询。此时,HBase现有的功能特性,已经不能满足此类查询需求了,大数据量的全表扫描不仅非常慢,也很容易造成RS因为大scan频繁挂掉的问题。对于有search功能的HBase来说,通过二级索引借助luence的能力很容易就能解决这个问题。
总结
文中对云HBase2.0的search功能做了简单介绍。笔者更想通过本文能和有此类业务需求的同学进行交流,欢迎加我微信。另外,此功能预计7月份公测,也欢迎申请试用,感兴趣的同学留言哦!