获取原文
简短介绍
大家好,对于之前的kylin安装和使用,都有所理解了么?学习其实很多时候靠的是自觉。如果你还年轻,建议可以多深度的学习一些东西。好吧,今天给大家分享下kylin的一些原理,这些是我很早以前整理的资料了,不过也没有过时,还是能用上。
之前Apache kylin相关分享
01-Apache kylin发展历史
说明:kylin从2013年到现今,进行了4次大版本的迭代。其中引入了很多新特性,还是值得我们关注的。
02-Apache kylin Cube操作过程
说明:有动手实操过cube设计,或者看过之前我分享的kylin使用的小伙伴们应该知道。在创建cube时:
-
首先需要选择维度表和事实表。
-
之后设置需要计算的维度和度量等等。
-
最终我们设计和计算出来的cube数据都将存放在hbase中。
说明:当我们的cube设计体现到物理上时,就是如图中显示的。
先是表关联,之后计算cube,最后结果根据不同维度组合落入多张hbase表中。
说明:在cube构建过程中,其实是很多次,不同维度的组合计算。最终将所有预计算的结果存放到hbase中。
03-Apache kylin原理架构
说明:kylin支持多种数据源的接入。当数据接入后,采用不同的计算引擎进行预计算。之后将数据存储到hbase中,最后可通过BI工具对kylin计算结果数据查询。
说明:kylin是单节点部署模式,同时kylin的部署分为2种类型的节点。一种是job,一种是query。
-
job节点:负责cube的创建和构建(一个集群只允许有一个job节点)
-
query节点:负责对结果数据进行查询(可以有多个query节点)
如果一个节点同时承担job和query的工作,那么类型设置为all。
说明:如果针对一种产品。我们想知道:产品在什么时间,什么地点,销售了多少。如果我们提前进行了预计算,是不是可以立马从中定位到数据呢?图中设计的维度:产品、时间、地点。针对维度进行预计算,得出所有的结果信息,就是我们的数据立方体。之后我们可以通过任意组合就能很快的获取到所需的数据。
说明:那么kylin是如何做的呢?kylin将所有维度组合,分别进行组合计算,之后生成不同的组合表,存入到hbase中。也就形成了我们所说的立方体。这里可以理解为2^N种组合。
说明:显然,如果进行所有维度的组合计算,将要进行2^N次计算。这是一个几何倍数的运算,非常的恐怖。那么kylin为了优化计算方法,进行维度的部分计算。从而大大减少计算次数。但是在后续查询时,还是需进行少量的查询计算。这就是kylin剪枝维度的过程。
说明:部分计算是kylin cube中一个很重要的优化点。这样有效的控制了维度组合的爆炸。图中白色部分是预计算的结果,灰色部分可以通过白色部分的结果来重新获取。所以有时不用计算所有维度。只是部分维度预计算,这样也大大缩短了我们预计算的时间。同时也节省了一些磁盘空间。
-
coubid就是计算结果将产生的hbase张数。这里最终会产生4张hbase表。
04-小结
kylin目前作为一款OLAP工具还是非常耀眼的。很多厂都在用它。所以小伙伴们可以多了解下哦。特别是cube优化这块。国产大数据组件还是蛮香的 ^_^
官网地址:http://kylin.apache.org/cn/docs/
架构概述图