HBase 生态介绍
我们都知道,HBase是受Google公布的BigTable论文而产生的一种分布式、多版本、面向列的开源 KV 数据库。HBase稀疏矩阵的设计使得其特别适合存储非结构化的数据,比如用户画像、日志以及消息等数据。但是随着业务的快速发展,我们面临着各种新挑战和新需求,数据格式也随着业务的发展变得多种多样,其中包括:KV 数据、关系数据、文档数据、图数据以及时空时序等数据。而且随着时间的推移,各种数据占比越来越大,如下图所示:
从上图可以看出,从2013年开始,关系型数据的总体占比在逐年下降;而图数据、搜索数据、KV 数据、文档数据以及时序数据等却在逐年上升。到2018年, 关系型数据的占比已经由2013年的90%多下降到 2018年的75.4%。
面对如此多样的数据,我们急需一种系统,能够存储这些逐年增长的数据。所以 很有必要在 HBase 之上引入各种组件,使得 HBase 能够支持 SQL、时序、时空、 图、全文检索能力、及复杂分析。所以,完整的 HBase 生态如下:
从最底下开始看,这里面可以根据不同的需求选择不同的存储介质。比如热数据我们可以存储在SSD中;温数据存储在HDD中,冷数据存储在 OSS中。中间一层就是HBase以及Solr。最上层是解决各种场景的组件。下面简单介绍下每种组件的作用。
- Phoenix:主要提供SQL的方式来查询HBase里面的数据。一般能够在毫秒级别返回,比较适合OLTP以及操作性分析等场景。目前 Phoenix支持ANSI92语法,支持构建二级索引。
- Spark:很多企业使用HBase存储海量数据,一种常见的需求就是对这些数据进行离线分析,我们可以使用Spark(Spark SQL) 来实现海量数据的离线分析需求。同时,Spark还支持实时流计算,我们可以使用 HBase+Spark Streaming 解决实时广告推荐等需求。
- HGraphDB:HGraphDB是分布式图数据库,可以使用其进行图 OLTP查询,同时我们还可以结合 Spark GraphFrames 实现图分析需求。通过依托图关联技术,帮助金融机构有效识别隐藏在网络中的黑色信息,在团伙欺诈、黑中介识别等。
- GeoMesa:目前基于NoSQL数据库的时空数据引擎中功能最丰富、社区贡献人数最多的开源系统。提供高效时空索引,支持点、线、面等空间要素存储,百亿级数据实现毫秒(ms)级响应;提供轨迹查询、区域分布统计、区域查询、密度分析、聚合、OD 分析等常用的时空分析功能;提供基于Spark SQL、REST、GeoJSON、OGC服务等多种操作方式,方便地理信息互操作。
- OpenTSDB:基于HBase的分布式的,可伸缩的时间序列数据库。适合做监控系统;譬如收集大规模集群(包括网络设备、操作系统、应用程序)的监控数据并进行存储,查询。
- Solr:原生的HBase只提供了Rowkey单主键,如果我们需要对Rowkey之外的列进行查找,这时候就会有问题。幸好我们可以使用 Solr来建立二级索引/全文索引充分满足我们的查询需求。
通过在 HBase之上引入了各种组件之后,使得HBase应用场景得到了极大的扩展,满足了监控、车联网、风控、实时推荐、政企、人工智能等场景的需求。
目前阿里云提供了HBase及X-Pack组件,其X-Pack组件形式和上面的 HBase生态很类似;除此之外,X-Pack 组件还针对HBase做了大量的优化,满足丰富业务处理需求、同时更加易用、更加强大功能。