kylin的原理理解
kylin简介
kylin是一个大数据的OLAP引擎,是由ebay-中国团队研发的,是第一个真正由中国人自己主导、从零开始、自主研发、并成为Apache顶级开源项目,Hive的性能比较慢,支持SQL灵活查询,特别慢,HBase的性能快,原生不支持SQL,Kylin是将先将数据进行预处理(预计算),将预处理的结果放在HBase中。效率很高
kylin应用场景
用户数据存在于Hadoop HDFS中,利用Hive将HDFS文件数据以关系数据方式存取,数据量巨大,在500G以上
- 每天有数G甚至数十G的数据增量导入
- 有10个以内较为固定的分析维度
kylin的核心思想就是利用空间换时间,在数据 ETL 导入 OLAP 引擎时提前计算各维度的聚合结果并持久化保存,这样在用户进行查询的时候可以快速的返回结果,大致可以理解为给你一堆原始的数据,导入kylin中时它提前计算出所有可能的结果,这样在查询的时候如果命中了提前计算出的结果,则直接返回,省去了计算的时间,采用这种预计算的方式,可以使OLAP分析更加快速
kylin的总体架构
kylin依赖于Hadoop,Hive,Zookeeper,HBase
1.首先从数据源加载数据
2.然后再kylin中创建模块
3.创建模块以后再创建cube,指定指定各种设置等
4.这些都完成以后开始构建cube,这是开始数据的预计算
5.引擎可以选择mapreduce或者spark
6.预计算出来的结果会被保存到HBase中
kylin的工作原理
维度和度量
维度就是观察数据的角度,比如:日期,地域,产品渠道等
度量就是要被统计的统计值,可以进行累加求和求平均等操作
cube和cuboid
一个数据表中的字段要么是维度,要么是度量(可以被聚合)
给定一个数据模型,比如有N个维度,那么组合的可能性共有2^N种可能,
对于每一种维度的组合,对度量值进行聚合运算,所得的结果物化为一个视图,就称为cuboid(立方形)
所有的cuboid作为一个整体,称为cube(立方体),一个Cube就是许多按维度聚合的物化视图的集合
技术架构
在线查询模式主要处于上半部分,离线构建处于下半部分。以下为Kylin技术架构的具体内容:
- 数据源主要是Hadoop Hive,数据以关系表的形式输入,且必须符合星形模型,保存着待分析的用户数据。根据元数据的定义,构建引擎从数据源抽取数据,并构建Cube
- Kylin可以使用MapReduce或者Spark作为构建引擎。构建后的Cube保存在右侧的存储引擎中,一般选用HBase作为存储
- 完成了离线构建后,用户可以从上方查询系统发送SQL进行查询分析
- Kylin提供了各种Rest API、JDBC/ODBC接口。无论从哪个接口进入,SQL最终都会来到Rest服务层,再转交给查询引擎进行处理
- SQL语句是基于数据源的关系模型书写的,而不是Cube
- Kylin在设计时,刻意对查询用户屏蔽了Cube的概念
- 分析师只需要理解简单的关系模型就可以使用Kylin,没有额外的学习门槛,传统的SQL应用也很容易迁移
- 查询引擎解析SQL,生成基于关系表的逻辑执行计划,然后将其转译为基于Cube的物理执行计划,最后查询预计算生成的Cube并产生结果,整个过程不会访问原始数据源