热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一起探讨一下Kylin的工作原理

大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,

大家好,欢迎来到本篇博客,博主是一名刚入大数据行业的小白,利用空闲的时间来分享自己所学的知识,帮助和博主一样刚处于起步阶段的同学,水平不高,若有什么错误和纰漏之处恳请大佬不吝赐教,目前个人博客只有CSDN:https://zhenyu.blog.csdn.net/,感谢大家的支持,谢谢
送给大家一句话:今日事,今日毕

本篇博客主要讲解:Kylin的工作原理



Kylin

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


Kylin的工作原理

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




维度和度量

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


  • 电商的销售数据,可以从时间的维度来观察,也可以细化从时间和地区的维度来观察
  • 统计时,可以把维度值相同的记录聚合在一起,然后应用聚合函数做累加、平均、去重计数等聚合计算

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


时间(维度)销售额(度量)
2019 1Q1.7M
2019 2Q2.1M
2019 3Q1.6M
2019 4Q1.8M

时间(维度)地区(维度)销售额(度量)
2019 1Q中国1.0M
2019 1Q北美0.7M
2019 2Q中国1.5M
2019 2Q北美0.6M
2019 3Q中国0.9M
2019 3Q北美0.7M
2019 4Q中国0.9M
2019 4Q北美0.9M

Cube和Cuboid


  • 一个数据表或数据模型上的字段就它们要么是维度,要么是度量(可以被聚合)

  • 给定一个数据模型,可以对其上的所有维度进行组合。对于N个维度来说,组合的所有可能性共有2 的N 次方种

  • 对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为Cuboid(立方形)

  • 所有维度组合的Cuboid作为一个整体,被称为Cube(立方体)。一个Cube就是许多按维度聚合的物化视图的集合。


说明维度1地区维度2时间维度3维度4
取值0或10或10或10或1

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


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

在这里插入图片描述


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

工作原理

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


  1. 指定数据模型,定义维度和度量
  2. 预计算Cube,计算所有Cuboid并保存为物化视图(存储到hbase中)
  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并产生结果,整个过程不会访问原始数据源

小结

--------
感谢大家的支持,若有什么不正确的地方还请大家能及时的反馈,记得点赞收藏支持一下!在这里插入图片描述


推荐阅读
author-avatar
学银先生_512
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有