【云计算】kyin基本概述及原理
小标 2018-12-05 来源 : 阅读 1258 评论 0

摘要:本文主要向大家介绍了【云计算】kyin基本概述及原理,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】kyin基本概述及原理,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。


概述


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


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


 



 


 


Kylin官网下载://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


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轻量目录访问协议)


KYLIN支持技术


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


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


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


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


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


解决问题


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


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


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


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


Kylin cube原理


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


Cube说明:


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


 



 


 


维度组合Cuboid


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


 



 


 


Kylin中Cube的Build过程,其实是将所有的维度组合事先计算,存储于HBase中,以空间换时间,HTable对应的RowKey,就是各种维度组合,指标存在Column中。


这样,将不同维度组合的查询SQL,转换成基于RowKey的范围扫描,然后对指标进行汇总计算。


Kylin构建Cube的过程


如下图所示:


 



 


 


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


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


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


STEP4. 创建HBase Table;


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


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


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


整个Build过程结束。


增量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中。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程