Apache Kylin是Hadoop大数据平台上的一个开源的联机分析处理(Online AnalyticalProcessing,OLAP)引擎。它采用多维立方体预计算技术,将大数据的SQL查询速度从之前的分钟乃至小时级别提升到亚秒级别,这种百倍、千倍的速度提升,为超大规模数据集上的交互式大数据分析奠定了基础。
Apache Kylin怎样解决关键问题
- 大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后的统计值
- 聚合是按维度进行的,而维度的聚合可能性是有限的
Kylin的三个关键技术:
- 大规模并行处理
- 列式存储
- 预结算
Kylin工作原理
维度和度量
维度是观察数据的角度,一般是一组离散的值,比如时间维度上的每一个独立的日期、或者商品维度上的每一件独立的商品,统计时可以把维度值相同的记录聚合起来,应用聚合函数做累加、平均、去重复计数等聚合计算
度量是被聚合的统计值,也是聚合运算的结果,一般是连续值
Cube和Cuboid
给定一个数据模型,我们可以对其上所有维度进行组合。对于N个维度来说,所有组合的可能性有2N种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物化视图,称为Cuboid。将所有维度组合的Cuboid作为一个整体,被称为Cube。所以简单来说,一个Cube就是许多按维度聚合的物化视图的集合。
工作原理
Kylin的工作原理就是对数据模型做Cube预结算,并利用计算的结果加速查询,过程如下
- 指定数据模型,定义维度和度量
- 预结算Cube,计算所有Cuboid并将其保存为物化视图
- 执行查询时,读取Cuboid,进行加工运算产生查询结果
其他开源产品比较
与Apache Kylin一样致力于解决大数据查询问题的其他开源产品也有不少,比如Apache Drill、Apache Impala、Druid、Hive、Presto、SparkSQL等。本节将Apache Kylin与它们做一个简单的比较