Kylin开源的分布式分析引擎,为Hadoop等大型分布式数据平台之上的超大规模数据集通过标准 SQL 查询及多维分析( OLAP )功能,提供亚秒级的交互式分析能力。
Kylin的工作原理:
典型的空间换时间。利用cube 计算的结构加速我们的查询。具体过程如下。
1. 指定数据模型,定义维度和度量。
2. 预计算Cube ,计算所有Cuboid 并保存为物化视图。
3. 执行查询时,读取Cuboid ,运算,产生查询结果。
Kylin 的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等复杂运算,并利用预计算的结果来执行查询,因此相比非预计算的查询技术,其速度一般要快一到两个数量级,并且这点在超大的数据集上优势更明显。当数据集达到千亿乃至万亿级别时, Kylin 的速度甚至可以超越其他非预计算技术1000倍以上。
总结:
Kylin 的核心思想是Cube 预计算,理论基础是空间换时间,把高复杂度的聚合运算、多表连接等操作转换成对预计算结果的查询。
离线构建:
从图中可以看出,数据源在左侧,主要是 Hadoop/Hive/Kafka/RDBMS ,保存着待分析的用户数据。
根据元数据的定义,下方构建引擎从数据源抽取数据,并构建 Cube 。
数据以关系表的形式输入,且必须符合星形模型( Star Schema )。
Map Reduce 和 Spark 是主要的构建技术,Kylin 4.0 版本中Spark Engine 是唯一的构建引擎。
构建后的 Cube 保存在右侧的存储引擎中,选用 Parquet 作为存储
REST Server层:是API接口服务层
Query Engine 引擎构建层(HIve或者Spark)
Routing:路由层(默认查询是去cube中查询,如果查不到就会去利用计算引擎查,但路由层默认关闭)
Metadata:元数据管理层
Cube Build Engine:cube : cube构建层
架构:
使用教程:
一.创建Project
二.创建Models阶段
①Model info 模型名称
② Datamodel 选择事实表,选择维度表,选择连接条件
③Dimensions 选择维度
④measures选择度量值
⑤settings设置分区
三.创建cube
①cubeinfo :cube名称
②Dimensions:选择维度字段
③measures 选择度量值
④Refresh setting 设置存在hbase中的hfile小文件合并周期
⑤Hdvanced settings 高级聚合设置
⑥configurration overwrites
⑦overView展示页面
⑧save保存,选择action开始构建