本次分享的主题是阿里巴巴海量数据场景下的OLAP解决方案,主要是也为大家介绍一下阿里巴巴OLAP存储的一款产品——HiStore。大家都知道海量数据,包括大数据和数据仓库这些在当下都是非常热门的话题,大家都比较关心这个领域,所以这个领域也成为了各大厂商的必争之地,为什么?原因很简单,就是在未来,大家的不同就在于对于数据理解的不同,换句话说就是未来属于能够真正地读懂数据的人。
本次的分享将主要围绕以下四个方面进行:
一、HiStore产品的由来以及它所能够应对的场景以及能够解决的痛点
二、结合现实已经落地的成功案例帮助大家 理解HiStore的应用场景以及HiStore能够为业务带来什么样的价值
三、HiStore在目前海量数据、大数据以及数据仓库领域的定位
四、HiStore的核心技术、架构设计以及优化思路
一、Why HiStore?
业界的痛点
现在提到大数据,其实大家第一反应就是Hadoop体系的产品非常之多,让人眼花缭乱。在这里也为大家简单地梳理一下Hadoop技术栈的主要产品:第一代的HDFS、MapReduce产品,可以说太慢了,逐渐引进到第二代,第二代就是通过内存cache等增加吞吐量的方式产生了Spark等产品,这时候性能得到了进一步的提升。再往后就是如果想要实现一个复杂任务的话,使用MapReduce就会是一个比较复杂和麻烦的事情,那么就会考虑到是不是使用脚本或者SQL的方式就会更简单呢?因为SQL比较简单,那么就产生了Hive和Pig,而且现在逐渐比较流行了,到了这一步就已经引入了SQL了。SQL已经比较好用了,但是这时候在某些场景下实际的性能还不够,应该怎么办呢?其实性能还不够的原因在于之前的MapReduce以及Spark这种模型做的太通用、太健壮、太保守了,实际上我们应该在某种程度上更激进地获取数据,实际上这时候就产生了一些计算层的产品,比如Presto,Drill,Impala。
实际上就是Hadoop体系从下往上看就是从最底层的HDFS或者其他的一些分布式文件系统,到上层的第一代的MapReduce、Spark,在往上就是到Pig或者Hive;另外就是HDFS或者其他文件系统上直接跑Presto,Drill,Impala;那大规模数据处理的另外一个领域——大规模分布式MPP架构,比如SAP的HANA,HP的Vertica,开源的GreenPlum等等。
集团内的痛点
什么是HiStore
为了解决前面提到的业内以及集团内面临的痛点,HiStore产品就应运而生了。HiStore产品的定位是分布式低成本OLAP分析型数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列式存储,是低存储成本,低维护成本,海量数据OLAP存储引擎;有效的解决了海量数据存储的成本问题,以及在百亿数据场景下支持实时高效的多维度自由组合的检索。而且通过近两三年的发展,HiStore在阿里内部已经应用于多个核心应用,包括菜鸟、 B2B、阿里妈妈、聚划算、天猫等,也应用于很多外部用户,比如在人社部,上海新能源汽车,新零售等超大数据量测试环境都取得了令人信服的结果,无论成本、性能、稳定性都表现完美。
HiStore提供哪些特性来解决相关问题呢?HiStore所具有的特性如下图所示:
基于上面的这些特点,HiStore具有如下的这些优势:
- 海量数据存储: PB级数据大小,百亿条记录,数据量存储主要依赖自己提供的高速数据加载工具(TB/小时)和高数据压缩比(>10:1)。
- 高压缩比:平均压缩比>10:1,远高于常规压缩算法,甚至可以达到40:1,极大地节省了数据存储空间。
- 基于列存储:无需建索引,无需分区。即使数据量十分巨大,查询速度也很快,用于数据仓库、查询性能强劲、稳定:亿级记录数条件下,同等的SELECT查询语句(这里主要是聚合查询,多维查询等等),速度比MyISAM、InnoDB等普通的MySQL存储引擎快数十倍。
- 高性能数据导入:基于MySQL协议的并行导入,以及专门的数据预处理入库工具。
- 多维分析查询:实时性的多维度数据检索;海量数据聚合秒级计算;为实时业务提供保障。
- 线性扩展:用户可以轻松实现存储容量和处理能力的线性提升。
- 系统易用:迁移成本低,无其它依赖独立部署,MySQL工具及应用可直接无缝运行其上。
- 快速响应复杂的聚合类查询:适合复杂的分析性SQL查询,如SUM, COUNT, AVG, GROUP BY。
二、案例分析
接下来会借助一些成功落地的案例帮助大家深入地理解HiStore产品的使用场景。首先看下图将HiStore产品的应用场景做了简单的分类,这部分场景包括数据分析与商业智能、用户画像和用户行为、历史数据、分析应用与广告数据、日志,轨迹,记录,监控,归档、数据仓库、物联网数据、存储成本敏感等。
案例1:高德热力图
接下来结合几个实际的案例来分析,第一个案例就是高德热力图。大家都知道高德的产品是与地理相关的,它可以拿到每个人的地理信息,那么通过这种人地关系以及用户画像相结合,就可以实现如下图中右侧所示的界面这样的显示出用户的职业、性别、年龄、教育水平、资产等的用户画像。高德能够将地理位置与用户画像结合起来,那么就能够迸发出很多的商业价值,比如在确定了目标人群之后,对于商铺或者商品而言就可以通过这样的应用分析出潜在的客户,这样的产品目前也是高德目前的拳头级产品。那么对于这样的产品而言,在技术实现上有哪些难点呢?第一就是数据量大,万亿级别,导入速度要求高;除此之外就是想要在这么大的数据量上进行这样多维度聚合查询得出趋势和结论,传统的MySQL数据库将无法完成,简单来说传统MySQL数据库的InnoDB引擎是B+树的改进,B+树实际上是磁盘不友好的数据结构,其在数据查询和导入的时候会产生大量的随机IO,而且随着数据量的增加,B+树的分列会越来越多,就会导致数据导入越来越慢,查询起来也会越来越慢,甚至无法得出结果。
案例2:御膳房项目
御膳房策略中心项目是阿里巴巴集团“品销全营销,unimarketing”项目中的一部分,产品定位是品牌商品牌发展策略的支持平台,通过从淘宝、天猫、聚划算等平台收集的海量实时数据,帮助品牌商更高效,更明智地做出品牌发展相关的商业决策。
案例3:蚂蚁体验平台
我们再来看一个例子-蚂蚁体验平台,这个产品是为了构建一套包含“问题收集、分析、推进、协作、价值衡量”的体系,帮助蚂蚁金服自己的产品做良性的改进;方便蚂蚁小二对集团的数据进行分析,比如对花呗的几千万上亿的会员进行画像分析,从而对于产品做一些改进,这是用户行为分析以及商业智能的又一个典型的场景。
案例4:全链路追踪系统EagleEye
EagleEye是集团内一款应用广泛的分布式调用跟踪系统,主要帮助用户方便地查看应用的实时数据及快速定位线上问题,为全链路压测、跨单元分析、链路梳理提供数据支撑。而EagleEye系统日志量非常之大,大到每天近万亿条,大概每天会产生数千TB的数据,这个数据量在业内也属于顶级的一个水平了。另外就是EagleEye系统的数据峰值很高可以达到数千万的TPS,如果使用传统的MySQL成本太高,这样是吃不消的。
三、竞品分析
接下来为大家简单介绍一下大数据领域以及数据仓库领域,HiStore产品的定位以及竞品分析。
以下是针对于MPP架构的同类产品分析:
四、核心技术
下面简单介绍一下HiStore的架构和一些核心的技术点:
列式存储引擎
数据组织结构
整体架构
下面这张图大家可以从左上角开始看起,标准的MySQL客户端以及标准的JDBC和ODBC客户端都可以进来,其下面就是Parser以及Optimizer,也就是解析和优化器根据HiStore独特的数据结构来进行优排。再往下就是KG Manager,也就是知识网格和MetaData,这块内容也是数据结构最为核心的部分,也是高速数据导入最核心的部分,也包括Succinct Data。Succinct也是最近比较火的一个技术,它可以实现更好的数据压缩以及基于压缩包的检索,也就是说它可以在不需要解压数据的前提下就进行检索,HiStore中对于Succinct Data的数据结构实现了其C++版本。再往下的Memery Manager,也就是对于内存进行更加高效的加载,使得更多的数据存在内存里以实现更高效的数据查询和导入,然后右边这部分就是一些并行计算,比如sharding,也就是一条SQL语句进来之后如何实现分片,以及在分片之后进行并行处理。因为现在机器高配都是多磁盘的,那么可以实现充分利用多核、多磁盘以及这种并行计算的硬件优势。再往下就是压缩、解压,包括LZ4或者是PPM这种压缩解压算法。到最底下的落盘,HiStore支持与MySQL相同标准的Binlog以及自己的Hilog,这样可以方便的通过DRC以及阿里内部的精卫等进行数据同步,同步到其他数据源都是没有任何问题的。