前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >多角度带你认清Kylin的工作原理

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

作者头像
大数据梦想家
发布2021-01-27 16:13:23
4150
发布2021-01-27 16:13:23
举报

写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.csdn.net/ 尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影。 我希望在最美的年华,做最好的自己

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

在这里插入图片描述
在这里插入图片描述

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(立方形)
在这里插入图片描述
在这里插入图片描述
  • 所有维度组合的Cuboid作为一个整体,被称为Cube(立方体)。一个Cube就是许多按维度聚合的物化视图的集合。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关于数据立方体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技术架构的具体内容:

  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的工作原理还一头雾水的朋友,看完一定能够恍然大悟?

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Kylin的工作原理
    • 维度和度量
      • Cube 和 Cuboid
        • 工作原理
          • 技术架构
          • 总结
          相关产品与服务
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档