在之前的博客中,博主已经为大家带来了Kylin的​简单介绍​,​环境搭建​以及​简单入门使用​。本篇博客,博主为大家带来的是关于​Kylin工作原理​的介绍!

多角度带你认清Kylin的工作原理_Kylin


文章目录


  • Kylin的工作原理
  • 维度和度量
  • Cube 和 Cuboid
  • 工作原理
  • 技术架构
  • 总结


Kylin的工作原理

        Apache Kylin的工作原理本质上是 MOLAP(多维立方体分析)。

维度和度量

  • 维度就是观察数据的角度 ,例如:

        电商的销售数据,可以从时间的维度来观察,也可以细化从时间和地区的维度来观察。

        统计时,可以把维度值相同的记录聚合在一起,然后应用聚合函数做累加、平均、去重计数等聚合计算。

  • 度量就是被聚合的统计值,也是聚合运算的结果。

例如:

时间(维度)

销售额(度量)

2019 1Q

1.7M

2019 2Q

2.1M

2019 3Q

1.6M

2019 4Q

1.8M

时间(维度)

地区(维度)

2019 1Q

中国

2019 1Q

北美

2019 2Q

中国

2019 2Q

北美

2019 3Q

中国

2019 3Q

北美

2019 4Q

中国

2019 4Q

北美

Cube 和 Cuboid


  • 一个数据表或数据模型上的字段要么是维度,要么是度量(可以被聚合)
  • 给定一个数据模型,可以对其上的所有维度进行组合。对于N个维度来说,组合的所有可能性共有2 的N 次方种
  • 对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为Cuboid(立方形)

多角度带你认清Kylin的工作原理_Hive_02

  • 所有维度组合的Cuboid作为一个整体,被称为Cube(立方体)。​一个Cube就是许多按维度聚合的物化视图的集合​。
    多角度带你认清Kylin的工作原理_HBase_03
    多角度带你认清Kylin的工作原理_HBase_04

关于数据立方体Cube


  • Cube 是所有 dimession 的组合
  • 每一种 dimession 的组合称之为cuboid(立方形)。某一有 n 个 dimession 的 cube 会有 2^n个 cuboid。
  • 数据立方体只是多维模型的一个形象的说法。

为什么叫立方体?


  • 立方体本身只有三维,但多维模型不仅限于三维模型,可以组合更多的维度。
  • 为了与传统关系型数据库的二维表区别开来,才有了数据立方体的叫法。

工作原理

        Apache Kylin的​​工作原理​是对数据模型做Cube预计算,并利用计算的结果加速查询​。具体工作过程如下:


  1. 指定数据模型,定义维度和度量
  2. 预计算Cube,计算所有Cuboid并保存为物化视图
  3. 执行查询时,读取Cuboid,运算,产生查询结果

高效OLAP分析:


  • Kylin的查询过程不会扫描原始记录,而是​通过预计算预先完成表的关联、聚合等复杂运算
  • 利用预计算的结果来执行查询,相比非预计算的查询技术,其速度一般要快一到两个数量级,​在超大的数据集上优势更明显
  • 数据集达到千亿乃至万亿级别时,​Kylin的速度可以超越其他非预计算技术1000倍以上

技术架构

        Apache Kylin系统可以分为​在线查询​和​离线构建​两部分。

        在线查询模式主要处于上半部分,离线构建处于下半部分。

​在线查询​

多角度带你认清Kylin的工作原理_Hadoop_05

​离线构建​

多角度带你认清Kylin的工作原理_Hive_06

多角度带你认清Kylin的工作原理_HBase_07

多角度带你认清Kylin的工作原理_Hadoop_08

        以下为Kylin技术架构的具体内容:


  1. 数据源主要是Hadoop Hive,数据以关系表的形式输入,且必须符合​星形模型​,保存着待分析的用户数据。根据元数据的定义,构建引擎从数据源抽取数据,并构建Cube
  2. Kylin可以使用MapReduce或者Spark作为构建引擎。构建后的Cube保存在右侧的存储引擎中,一般选用HBase作为存储
  3. 完成了离线构建后,用户可以从上方查询系统发送SQL进行查询分析
  4. Kylin提供了各种Rest API、JDBC/ODBC接口​。无论从哪个接口进入,SQL最终都会来到Rest服务层,再转交给查询引擎进行处理
  5. SQL语句是基于数据源的关系模型书写的,而不是Cube

        ■ Kylin在设计时,刻意对查询用户屏蔽了Cube的概念

        ■ 分析师只需要理解简单的关系模型就可以使用Kylin,没有额外的学习门槛,传统的SQL应用也很容易迁移

        ■ 查询引擎解析SQL,生成基于关系表的逻辑执行计划,然后将其转译为基于Cube的物理执行计划,最后查询预计算生成的Cube并产生结果,整个过程不会访问原始数据源


总结

        本篇博客从多个角度为大家揭示了Kylin的工作原理。相信在看之前对Kylin的工作原理还一头雾水的朋友,看完一定能够恍然大悟????

        ​如果以上过程中出现了任何的纰漏错误,烦请大佬们指正????

        ​受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波????

多角度带你认清Kylin的工作原理_HBase_09