【转】kylin优化

转自:

http://www.bitstech.net/2016/01/04/kylin-olap/

http://www.csdn.net/article/2015-11-27/2826343

http://tech.youzan.com/kylin-mondrian-saiku/

Apache Kylin对传统MOLAP的改进

计算Cube的存储代价以及计算代价都是比较大的, 传统OLAP的维度爆炸的问题Kylin也一样会遇到。 Kylin提供给用户一些优化措施,在一定程度上能降低维度爆炸的问题:

  1. Cube 优化:
  • Hierachy Dimension
  • Derived Dimension
  • Aggregation Group

Hierachy Dimension, 一系列具有层次关系的Dimension组成一个Hierachy, 比如年、月、日组成了一个Hierachy, 在Cube中,如果不设置Hierarchy, 会有 年、月、日、年月、年日、月日 6个cuboid, 但是设置了Hierarchy之后Cuboid增加了一个约束,希望低Level的Dimension一定要伴随高Level的Dimension 一起出现。设置了Hierachy Dimension 能使得需要计算的维度组合减少一半。

Derived Dimension, 如果在某张维度表上有多个维度,那么可以将其设置为Derived Dimension, 在Kylin内部会将其统一用维度表的主键来替换,以此来达到降低维度组合的数目,当然在一定程度上Derived Dimension 会降低查询效率,在查询时,Kylin使用维度表主键进行聚合后,再通过主键和真正维度列的映射关系做一次转换,在Kylin内部再对结果集做一次聚合后返回给用户

Aggregation Group, 这是一个将维度进行分组,以求达到降低维度组合数目的手段。不同分组的维度之间组成的Cuboid数量会大大降低,维度组合从2的(k+m+n)次幂至多能降低到 2的k次幂加2的m次幂加2的n次幂。Group的优化措施与查询SQL紧密依赖,可以说是为了查询的定制优化。 如果查询的维度是夸Group的,那么Kylin需要以较大的代价从N-Cuboid中聚合得到所需要的查询结果,这需要Cube构建人员在建模时仔细地斟酌。

  1. 数据压缩:

Apache Kylin针对维度字典以及维度表快照采用了特殊的压缩算法,对于Hbase中的聚合计算数据利用了Hadoop的LZO或者是Snappy,从而保证存储在Hbase以及内存中的数据尽可能的小。其中维度字典以及维度表快照的压缩考虑到DataCube中会出现非常多的重复的维度成员值,最直接的处理方式就是利用数据字典的方式将维度值映射成ID, Kylin中采用了Trie树的方式对维度值进行编码

  1. distinct count聚合查询优化:

Apache Kylin 采用了HypeLogLog的方式来计算DistinctCount。好处是速度快,缺点是结果是一个近似值,会有一定的误差。在非计费等通常的场景下DistinctCount的统计误差应用普遍可以接受。

具体的算法可见Paper,本文不再赘述:

http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf

使用Apache Kylin的实践总结

1、大的事实表采用天分区增量构建,为了不影响查询性能,可以定期做合并(Merge),周期可以根据实际情况确定,我们一周进行一次合并。

2、对于维表比较大的情况,或者查询Select部分存在复杂的逻辑判断,存在Apache Kylin不支持的函数或语句时,可以将事实表和维表的关联处理创建为Hive视图,之后根据视图创建Cube模型。

3、每次查询必然带有的条件建议在字典设置步骤将其设置为Mandatory。这样会最终 Build出来Cube的大小会减少一半。

4、Cube的维度如果超过10个,建议将常用的聚合字段做分组,我们对于最大的16个维度分了三个组,每组大概在5个维度左右。

5、Cube定义中RowKey顺序:Mandatory维度,Where过滤条件中出现频率较多的维度,高基数维度,低基数维度。

6、对于Hierarchies,Derived维度方面配置优化可以参考社区文档:

http://kylin.incubator.apache.org/docs/howto/howto_optimize_cubes.html

7、部署层面,可以通过Nginx在前端做负载均衡,后端启动多个Query Server接收查询请求处理。

时间: 2024-10-26 05:52:59

【转】kylin优化的相关文章

【转】Kylin的Hierarchies,Derived维度方面配置优化

http://blog.csdn.net/jiangshouzhuang/article/details/51286150 Hierarchies: 理论上对于N维度,我们可以进行2的N次方的维度组合.然而对于一些维度的组合来说,有时是没有必要的.例如,如果我们有三个维度:continent, country, city,在hierarchies中,最大的维度排在最前面.当使用下钻分析时,我们仅仅需要下面的三个维度的组合:group by continentgroup by continent,

Apache Kylin高级部分之使用Hive视图

本章节我们将介绍为什么需要在Kylin创建Cube过程中使用Hive视图:而如果使用Hive视图,能够带来什么好处,解决什么样的问题:以及需要学会如何使用视图,使用视图有什么限制等等. 1.      为什么需要使用视图 Kylin创建Cube的过程中使用Hive的表数据作为输入源.但是有些情况下,Hive中的表定义和数据并不能满足分析的需求,例如有些列的值需要进行处理,有些列的类型不满足需求,甚至有时候我们在创建Hive表时为了方便快捷,会将Hive表的所有列的字段类型都定义为string,因

【转】Kylin实践之使用Hive视图

http://blog.csdn.net/yu616568/article/details/50548967 为什么需要使用视图 Kylin在使用的过程中使用hive作为cube的输入,但是有些情况下,hive中的表定义和数据并不能满足分析的需求,例如有些列的值需要进行处理,有些列的类型不满足需求,甚至有时候在创建hive表时为了图方便,hive中的所有列都被定义成了string,因此很多情况下在使用Kylin之前需要对hive上的数据格式进行适当的修剪,但是使用alter table的方式修改

kylin入门到实战:cube详述

版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=306 排版乱?请移步原文获得更好的阅读体验 1.什么是cube? cube是所有dimession的组合,每一种dimession的组合称之为cuboid.某一有n个dimession的cube会有2n个cuboid,如图: 对应一张hive表,有time,item,location,supplier这四个维度,则0-D cuboid时对应的查询语句为 select sum(money) from table

大数据量多维分析项目Kylin调研二期

一.    cube构建步骤 登录页面 创建Project   同步数据   1)     加载Hive表 2)     从同步的目录中导入,即将上张图中左侧的数据库中的表导入 3)     上传Hive表 4)     添加流表. 创建Model 事实表关联其他表创建一个model 1)     填写基本信息 2)     选择事实表 3)     填写关联表(lookup_table)及关联方式 4)     选择维度 5)     选择统计值 创建cube 1)     cube信息  

关于Kylin结果缓存的思考

由来 Apache Kylin定位是大数据量的秒级SQL查询引擎,原理是通过预计算所有可能的维度组合存储在Hbase中,查询时解析SQL获取维度和度量信息,然后再从hbase中扫描获取数据返回,个人认为Kylin最强大的地方在于实现了SQL引擎,如果使用自定义的格式化查询语言也可以完成相应的数据访问操作,无非是指定查询的维度.度量.聚合函数.过滤条件,排序列等等. 但是这种描述较之于SQL太弱了,SQL很灵活的将一些复杂的语义转换,例如kylin中不支持select xxx where xx i

kylin学习笔记

阅读官网,学到哪就写到哪 1.需要先建立Model 2.kylin需要配置事实表,纬度表:可以自定义join.  我的用法和官方建议的不同,我是直接在hive中将所有的取join成一个单表,再根据单表进行cude kylin. 因为我的join的同时有一些业务上的处理. 3.需要选择cude的纬度字段和聚合的度量字段:纬度字段可以在所有的表中选择,度量字段只能在事实表中选择(度量字段就是被sum,avg,count的字段) 4.建立MODEL时,需要选择partition,一般是按天进行增量.

Kylin系列之二:原理介绍

2018年4月15日 15:52 因何而生 Kylin和hive的区别 1. hive主要是离线分析平台,适用于已经有成熟的报表体系,每天只要定时运行即可. 2. Kylin主要是MLOAP(多维在线分析平台).在线意味着提供快速的相应速度.主要适用于分析师不知道自己需要哪些数据,建立怎样的模型,需要不断的摸索,查询一致形成一个完整的模型和方案. 3. 通常的做法是在Kylin中进行数据的调研,探索,建立模型.形成固定模式后在hive中进行运行. 原理与架构 1. 基本原理是使用MR或者Spar

顶级项目孵化的故事系列——Kylin的心路历程【转】

现在已经名满天下的 Apache Kylin,是 Hadoop 大数据生态系统不可或缺的一部分,要知道在 Kylin 项目早期,可是以华人为主的开源团队,一路披荆斩棘经过几年的奋斗,才在 Apache 基金会牢牢的巩固了自己的位置.作为本土第一个进入到世界顶级基金会的项目,Kylin 的经验是值得大家学习的. 以下内容根据 COSCon'17讲师史少锋(Apache Kylin PMC&Committer .Kyligence 技术合伙人兼高级架构师)的演讲速记所整理. 演讲实录 今天我主要介绍