apache Kylin 权威指南
各式各样的”SQL on Hadoop”技术应运而生,其中以Hive为代表,Impala、Presto、Phoenix、Drill、SparkSQL等紧随其后。它们的主要技术是”大规模并行处理”(Massive Parallel Processing,MPP)和”列式存储”(Columnar Storage)。大规模并行处理可以调动多台机器一起进行并行计算,用线性增加的资源来换取计算时间的线性下降。列式存储则将记录按列存放,这样做不仅可以在访问时只读取需要的列,还可以利用存储设备擅长连续读取的特点,大大提高读取的速率。这两项关键技术使得Hadoop上的SQL查询速度从小时提高到了分钟。
对于分析师来说,完备的、经过验证的数据模型比分析性能更加重要,直接访问纷繁复杂的原始数据并进行相关分析其实并不是很友好的体验,特别是在超大规模的数据集上,分析师将更多的精力花在了等待查询结果上,而不是在更加重要的建立领域模型上。
“预计算”就是Kylin在”大规模并行处理”和”列式存储”之外,提供给大数据分析的第三个关键技术。
Apache Kylin的工作原理本质上是MOLAP(Multidimensional Online Analytical Processing)Cube,也就是多维立方体分析。这是数据分析中相当经典的理论
Cube理论
星形模型(Star Schema)
MDX(MultiDimensional eXpressions)作为接口。虽然MDX作为OLAP查询语言
·大规模并行处理:可以通过增加机器的方式来扩容处理速度,在相同的时间里处理更多的数据。 ·列式存储:通过按列存储提高单位时间里数据的I/O吞吐率,还能跳过不需要访问的列。 ·索引:利用索引配合查询条件,可以迅速跳过不符合条件的数据块,仅扫描需要扫描的数据内容。 ·压缩:压缩数据然后存储,使得存储的密度更高,在有限的I/O速率下,在单位时间里读取更多的记录。
所有这些方法都只是提高了单位时间内处理数据的能力,当大家都一致采用这些技术时,它们之间的区别将只停留在实现层面的代码细节上。最重要的是,这些技术都不会改变一个事实,那就是处理时间与数据量之间的正比例关系。当数据量翻倍时,MPP(在不扩容的前提下)需要翻倍的时间来完成计算;列式存储需要翻倍的存储空间;索引下符合条件的记录数也会翻倍;压缩后的数据大小也还是之前的两倍。因此查询速度也会随之变成之前的两倍。当数据量成十倍百倍地增长时,这些技术的查询速度就会成十倍百倍地下降,最终变得不能接受。
Kylin对基数的计算方法采用的是HyperLogLog的近似算法
衍生维度 ??
增量构建
ETL