Apache Kylin 基本介绍

244 阅读2分钟

Apache Kylin是Hadoop大数据平台上的一个开源的联机分析处理(Online AnalyticalProcessing,OLAP)引擎。它采用多维立方体预计算技术,将大数据的SQL查询速度从之前的分钟乃至小时级别提升到亚秒级别,这种百倍、千倍的速度提升,为超大规模数据集上的交互式大数据分析奠定了基础。

Apache Kylin怎样解决关键问题

  • 大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后的统计值
  • 聚合是按维度进行的,而维度的聚合可能性是有限的

Kylin的三个关键技术:

  1. 大规模并行处理
  2. 列式存储
  3. 预结算

Kylin工作原理

维度和度量

维度是观察数据的角度,一般是一组离散的值,比如时间维度上的每一个独立的日期、或者商品维度上的每一件独立的商品,统计时可以把维度值相同的记录聚合起来,应用聚合函数做累加、平均、去重复计数等聚合计算

度量是被聚合的统计值,也是聚合运算的结果,一般是连续值

Cube和Cuboid

给定一个数据模型,我们可以对其上所有维度进行组合。对于N个维度来说,所有组合的可能性有2N种。对每一种维度的组合,将度量做聚合运算,运算的结果保存为一个物化视图,称为Cuboid。将所有维度组合的Cuboid作为一个整体,被称为Cube。所以简单来说,一个Cube就是许多按维度聚合的物化视图的集合。

工作原理

Kylin的工作原理就是对数据模型做Cube预结算,并利用计算的结果加速查询,过程如下

  1. 指定数据模型,定义维度和度量
  2. 预结算Cube,计算所有Cuboid并将其保存为物化视图
  3. 执行查询时,读取Cuboid,进行加工运算产生查询结果

其他开源产品比较

与Apache Kylin一样致力于解决大数据查询问题的其他开源产品也有不少,比如Apache Drill、Apache Impala、Druid、Hive、Presto、SparkSQL等。本节将Apache Kylin与它们做一个简单的比较