Apache Kylin 是 Hadoop 大数据平台上的一个开源 OLAP 引擎。它采用多维立方体预计算技术,可以将大数据的 SQL 查询速度提升到亚秒级别,它是一种以空间换时间的做法。
SQL on Hadoop 技术(Hive, Impala, SparkSQL等)将传统的数据库查询的小时级别提升到分钟级别,而 OLAP on Hadoop 则将 SQL on Hadoop 的分钟级别提升到亚秒级别。
SQL on Hadoop 的技术主要是:“大规模并行处理”(MPP: Massive Parallel Processing)和 “列式存储”(Columnar Storage)。MPP可以调动多台机器一起进行并行计算,通过增加机器来减少计算时间。列式存储则将记录按列存放存放,这样做不仅可以在访问时只读取需要的列,还可以利用存储设备擅长连续读取的特点,大大提高读取的速率。虽然这两项技术能提高计算和存储的速度,但还是无法改变查询问题本身的时间复杂度,查询时间总得跟数据量线性增长的关系。如果随着数据量的增加还想保持查询的时间不变就得扩大集群规模增加机器,但这样,机器成本高之外运维成本也随之增加。
Apache Kylin 的初衷就是要让千亿条、万亿条的数据达到秒级查询,其中的关键就是要打破查询时间随着数据量成线性增加的这个规律。大数据 OLAP 都有两个事实:1.大数据查询要的一般是统计结果,是多条记录经过聚合函数计算后统计值。原始的记录不是必需的,或者访问频率和概率极低。2.聚合是按维度进行的,由于业务范围和分析需求是有限的,有意义的维度聚合也是相对有限的,一般不会随着数据的膨胀而增长。基于以上两点,可以得到新思路–“预计算”。在查询前进行尽量多地预先计算聚合结果,查询的时候尽量使用预算的结果得出查询结果,从而避免直接扫描可