kyin基本概述及原理

      1. 概述

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP Online Analytical Processing 联机分析处理)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

2014年由中国开源提供给apache社区,2016年正式成为apache顶级项目。2017年推出kylin-2.1版本。

Kylin官网下载:http://kylin.apache.org/cn/download/

官网历史版本下载: https://archive.apache.org/dist/kylin/

 

源码下载:

Source Repo: git://git.apache.org/kylin.git 
Mirrored to Github: https://github.com/apache/kylin

 

 

      1. KYLIN是什么

可扩展超快OLAP引擎: 

Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计

- Hadoop ANSI SQL 接口: 

Kylin为Hadoop提供标准SQL支持大部分查询功能

- 交互式查询能力: 

通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能

- 多维立方体(MOLAP Cube  MultidimensionalOLAP):

用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体

- 与BI工具无缝整合:

Kylin提供与BI工具,如Tableau,的整合能力,即将提供对其他工具的整合

- 其他特性:

- Job管理与监控
- 压缩与编码
- 增量更新
- 利用HBase Coprocessor
- 基于HyperLogLog的Dinstinc Count近似算法
- 友好的web界面以管理,监控和使用立方体
- 项目及立方体级别的访问控制安全
- 支持LDAP (Lightweight Directory Access Protocol轻量目录访问协议)

 

 

      1. KYLIN支持技术

Kylin 核心: Kylin OLAP引擎基础框架,包括元数据(Metadata)引擎,查询引擎,Job引擎及存储引擎等,同时包括REST服务器以响应客户端请求

扩展: 支持额外功能和特性的插件

整合: 与调度系统,ETL,监控等生命周期管理系统的整合

用户界面: 在Kylin核心之上扩展的第三方用户界面

驱动: ODBC 和 JDBC 驱动以支持不同的工具和产品,比如Tableau

 

 

      1. 解决问题

在Apache Kylin集群上跑了多个Cube测试,结果表明它能够有效解决大数据计算分析的3大痛点问题。

痛点一:百亿级海量数据多维指标动态计算耗时问题,Apache Kylin通过预计算生成Cube结果数据集并存储到HBase的方式解决。

痛点二:复杂条件筛选问题,用户查询时,Apache Kylin利用router查找算法及优化的HBase Coprocessor解决;

痛点三:跨月、季度、年等大时间区间查询问题,对于预计算结果的存储,Apache Kylin利用Cube的Data Segment分区存储管理解决。

 

 

      1. Kylin cube原理

Kylin的核心思想是利用空间换时间,由于查询方面制定了多种灵活的策略,进一步提高空间的利用率,使得这样的平衡策略在应用中是值得采用的.

Cube说明:

Cube是一种典型的多维数据分析技术,一个Cube可以有多个事实表,多个维表构成。

http://omj0d66gq.bkt.clouddn.com/image003.png

 

  1. 维度组合Cuboid

Cube是所有的维度组合,任一维度的组合称为cuboid。理论上来说,一个N维的Cube,便有2N次方种维度组合(Cuboid),一个Cube含time,item, location, supplier四个维度,那么组合便有16种:

http://omj0d66gq.bkt.clouddn.com/image005.png

 

Kylin中Cube的Build过程,其实是将所有的维度组合事先计算,存储于HBase中,以空间换时间,HTable对应的RowKey,就是各种维度组合,指标存在Column中。
这样,将不同维度组合的查询SQL,转换成基于RowKey的范围扫描,然后对指标进行汇总计算。

 

  1. Kylin构建Cube的过程

如下图所示:

http://omj0d66gq.bkt.clouddn.com/image007.png

 

STEP1. 根据Cube定义的事实表和维度,在Hive中生成一张中间表;

STEP2. 使用MapReduce,从事实表中抽取维度的Distinct值,并以字典树的方式压缩编码,同时也对所有维度表进行压缩编码,生成维度字典;

STEP3. 计算和统计所有的维度组合,并保存,其中,每一种维度组合,称为一个Cuboid;

STEP4. 创建HBase Table;

STEP5. 利用step1中间表的数据,使用MapReduce,生成每一种维度组合的数据;

STEP6. 将Cuboid数据转换成HFile,并导入到HBase Table中:

STEP7. 更新Cube信息,清理中间表:

整个Build过程结束。

 

  1. 增量Cubing

Kylin与传统的OLAP一样,无法应对数据Update的情况(更新数据会导致Cube的失效,需要重建整个Cube)。面对每天甚至每两个小时这样固定周期的增量数据,Kylin使用了一种增量Cubing技术来进行快速响应。Kylin的Cube可以根据时间段划分成多个Segment。在Cube第一次Build完成之后会有一个Segment,在每次增量Build后会产生一个新的Segment。增量Cubing依赖已有的Cube Segments和增量的原始数据。增量Cubing的步骤和新建 Cube的步骤类似,Segment之间以时间段进行区分。

增量Cubing所需要面对的原始数据量更小,因此增量Cubing的速度是非常快的。然而随着Cube Segments的数目增加,一定程度上会影响到查询的进行,所以在Segments数目到一定数量后可能需要进行Cube Segments的合并操作,实际上merge cube是合成了一个新的大的Cube Segment来替代,Merge操作是一个异步的在线操作,不会对前端的查询业务产生影响。

合并操作步骤如下:

  • 遍历指定的Cube Segment.
  • 合并维度字典目录和维度表快照.
  • 利用MapReduce合并他们的 N-Dimension cuboid.
  • 将cuboid转换成HFile,生成新的HTable,替代原有的多个HTable.

 

Kylin使用步骤

1、主要步骤
Kylin中多维分析主要包括以下步骤:
Hive中分析好事实表
Kylin中建立项目(project)
Kylin中建立数据源,从hive同步表
Kylin中建立数据模型model
Kylin中基于model建立Cube
Build Cube
查询Cube

按照上面的过程,最终将Hive中的事实表按照相应的结构,压缩并存储在HBase中。
官网提供了中文文档,说明了如何在Kylin中建立Cube,非常详细:

http://kylin.apache.org/cn/docs15/tutorial/create_cube.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starsky20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值