Apache Kylin 入门 2 - 原理与架构

栏目: 数据库 · 发布时间: 6年前

内容简介:简单来说,Kylin 的核心思想是把高复杂度的聚合运算、多表连接等操作转换成对预计算结果的查询,这决定了 Kylin 能够拥有很好的快速查询和高并发能力,具体工作过程如下:Apache Kylin 系统可以分为

简单来说,Kylin 的核心思想是 预计算(利用空间换时间) ,即对多维分析可能用到的度量进行预计算,将计算好的结果保存成 Cube 并存在 HBase 中,供查询时直接访问。

把高复杂度的聚合运算、多表连接等操作转换成对预计算结果的查询,这决定了 Kylin 能够拥有很好的快速查询和高并发能力,具体工作过程如下:

  1. 指定数据模型(Model),定义维度(Dimensions)和度量(Measure);
  2. 预计算 Cube,计算所有 Cuboid 并保存为物化视图;
  3. 执行查询时(Restful API/JDBC/ODBC),读取 Cuboid,运算,产生查询结果。

体系架构

Apache Kylin 系统可以分为 在线查询和离线构建 两部分,技术架构如图所示,在线查询的模块主要处于上半区,而离线构建则处于下半区。

Apache Kylin 入门 2 - 原理与架构

Kylin 的核心模块

  • REST Server :提供 Restful 接口,例如创建、构建、刷新、合并等 Cube 相关操作,Kylin 的 Projects、Tables 等元数据管理,用户访问权限控制,SQL 的查询等;
  • Query Engine :使用开源的 Apache Calcite 框架来实现 SQL 解析,可以理解为 SQL 引擎层;
  • Routing :负责将解析 SQL 生成的执行计划转换成 Cube 缓存的查询,这部分查询是可以在秒级甚至毫秒级完成;
  • Metadata :Kylin 中有大量的元数据信息,包括 Cube 的定义、星型模型的定义、Job 和执行 Job 的输出信息、模型的维度信息等等,Kylin 的元数据和 Cube 都存储在 HBase 中,存储的格式是 json 字符串;
  • Cube Build Engine :所有模块的基础,它主要负责 Kylin 预计算中创建 Cube,创建的过程是首先通过 Hive 读取原始数据,然后通过一些 MapReduce 或 Spark 计算生成 Htable,最后将数据 load 到 HBase 表中。

离线构建

离线构建的主要步骤:

  1. 数据源在左侧,目前主要是 Hadoop Hive,保存着待分析的用户数据;
  2. 根据元数据的定义,下方构建引擎从数据源抽取数据,并构建 Cube;
  3. 数据以关系表的形式输入, 且必须符合星形模型 (2.0 开始已经支持星型模型);
  4. MapReduce 是当前主要的构建技术 (2.5 开始 Spark 是主要的构建技术);
  5. 构建后的 Cube 保存在右侧的存储引擎中,一般选用 HBase 作为存储。

在线查询

  1. 用户可以从上方查询系统(Rest API、JDBC/ODBC)发送 SQL 进行查询分析;
  2. 无论从哪个接口进入,SQL 最终都会来到 Rest 服务层,再转交给查询引擎进行处理;
  3. 查询引擎解析 SQL,生成基于关系表的逻辑执行计划;
  4. 然后将其转译为基于 Cube 的物理执行计划;
  5. 最后查询预计算生成的 Cube 并产生结果。

可扩展架构

可扩展指 Kylin 可以对其主要依赖的三个模块做任意的扩展和替换,Kylin 的三大依赖模块分别是数据源(Hive)、构建引擎(MR)和存储引擎(HBase)。

可扩展架构带来了额外的灵活性,比如,它可以允许多个引擎同时并存。例如 Kylin 可以同时对接 Hive、Kafka 和其他第三方数据源;抑或用户可以为不同的 Cube 指定不同的构建引擎或存储引擎,以期达到最极致的性能和功能定制。

Apache Kylin 入门 2 - 原理与架构

构建算法

Layered Cubing

这个四维 Cube 需要五轮的 MapReduce 来完成:第一轮 MR 的输入是源数据,这一步会对维度列的值进行编码,并计算 ABCD 组合的结果。接下来的 MR 以上一轮的输出结果为输入,向上聚合计算三个维度的组合:ABC、BCD、ABD和ACD;依此类推,直到算出所有的维度组合。

Layered Cubing 的特点:

  • 算法比较简单;
  • 算法的稳定性非常高;
  • 计算量或者数据量大的时候并不能充分利用系统的资源;
  • 没有充分利用内存(缓存中间计算结果)。
Apache Kylin 入门 2 - 原理与架构

Fast Cubing

最大化利用 Mapper 端的 CPU 和内存,对分配的数据块,将需要的组合全都做计算后再输出给 Reducer;由 Reducer 再做一次合并(Merge),从而计算出完整数据的所有组合。如此,经过一轮 MapReduce 就完成了以前需要 N 轮的 Cube 计算。

Apache Kylin 入门 2 - 原理与架构

Fast Cubing 的特点:最大限度地把计算发生在 Mapper 这一端,一方面减少 shuffle 的数据量,另一方面减少 Reducer 端的计算量。

第一步会计算 Base Cuboid(所有维度都有的组合),再基于它计算减少一个维度的组合。基于 parent 节点计算 child 节点,可以重用之前的计算结果;当计算 child 节点时,需要 parent 节点的值尽可能留在内存中;如果 child 节点还有 child,那么递归向下,所以它是一个 深度优先遍历 。当有一个节点没有 child,或者它的所有 child 都已经计算完,这时候它就可以被输出,占用的内存就可以释放。

Apache Kylin 入门 2 - 原理与架构

Any Code,Code Any!

欢迎扫码关注『AnyCode』,编程路上,你并不孤单。

Apache Kylin 入门 2 - 原理与架构

以上所述就是小编给大家介绍的《Apache Kylin 入门 2 - 原理与架构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

SQL基础教程

SQL基础教程

MICK / 孙淼、罗勇 / 人民邮电出版社 / 2017-6-1 / CNY 79.00

本书是畅销书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。每章结尾设置有练习题,帮助读者检验对各章内容的理解程度。另外,本书还将重要知识点总结为“法则”,方便读者随时查阅。第2版除了将示例程序更新为对应新版本的DB的SQL之外,还新增了一......一起来看看 《SQL基础教程》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具