ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kylin 的架构原理

2022-01-02 14:31:52  阅读:175  来源: 互联网

标签:cube 架构 Hive 查询 SQL 维度 Kylin 原理


Apache Kylin 是一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay Inc. 开发并贡 献至开源社区。它能在亚秒内查询巨大的 Hive 表。Apache Kylin 令使用者仅需三步, 即可实现超大数据集上的亚秒级查询:

  1. 定义数据集上的一个星形或雪花形模型
  2. 在定义的数据表上构建 cube
  3. 使用标准 SQL 通过 ODBC、JDBC 或 RESTFUL API 进行查询,仅需亚秒级响应时 间即可获得查询结果。
    在这里插入图片描述

Kylin 数据处理原理及架构原理

kylin 的核心思想是预计算,kylin 对多维分析可能用到的度量进行预计算,将高 维复杂的聚合计算,多表连接等操作转换成预计算结果,将计算好的结果保存成 Cube, 存储于 Hbase 中,供查询时直接访问。预计算过程需要很长时间,但是一旦结果计算出 来,再次查询只是获取结果集合的过程,不需要额外再次浪费集群资源进行长时间查询, 这种以空间换取时间的处理数据模式决定了 Kylin 拥有很好的快速查询、高并发能力。

Kylin 是一个 MOLAP(多维联机数据分析)系统,最常用的是将 Hive 中的数据进行 预计算,利用 Hadoop 的 Mapreduce 或者 Spark 分布式计算框架来实现。Kylin 获取 的数据表是星型数据结构的,目前建模时,只支持一张事实表,多张维度表,假设业务需 求比较复杂,可以考虑在 Hive 中进行预处理生成一张宽表来处理。

对于 Hive 中的维度表和事实表,根据我们指定的维度列来构建 cube,cube 是所有 维度的组合,任一维度的组合称为 cuboid,即:cube 中包含所有的 cuboid。理论上来 说,一个 N 维的 cube,会有 2 的 N 次方种维度组合(cuboid)。举例:假设一个 cube 包 含 time、country、city、location 四个维度,那么就有 16 中 cuboid 组合。通过 计算框架的计算将 OLAP 分析的 cube 数据存储在 Hbase 中,方便后期实现多维数据集的 交互式快速查询。
在这里插入图片描述
REST Server:提供 Restful 接口,可以通过此接口来创建、构建、刷新、合并 Cube 等相关操作。同时也可以通过 Restful 接口实现 SQL 查询。

Query Engine:目前 Kylin 使用开源的 Calcite 框架来实现 SQL 解析,用户发出 SQL 查询之后,可以通过 Query Engine 来将 SQL Query 语句转换成 SQL 语法树,也 就是逻辑计划。

Routing:负责将解析 SQL 生成的执行计划转换成 cube 缓存的查询,cube 是通过 预计算缓存在 Hbase 中,这部分查询时可以在秒级甚至是毫秒级完成,除此之外,还有一 些操作需要使用原始数据(存储在 HDFS 上)通过 Hive 查询,这部分查询的延迟比较 高。

Metadata:Kylin 中有大量的元数据信息,包括 cube 的定义、星型模型的定义、 job 和执行 job 的输出信息、模型的维度信息等等。Kylin 的元数据存储在 Hbase 中, 存储的格式是 Json 字符串。

Cube Build Engine:立方体构建模块是所有模块的基础,主要负责 Kylin 预计算 中创建 cube,创建的过程是首先通过 Hive 读取原始数据,然后通过 MR 或者 Spark 计算 生成 Htable,最后将数据加载到 Hbase 表中。

标签:cube,架构,Hive,查询,SQL,维度,Kylin,原理
来源: https://blog.csdn.net/manba_yqq/article/details/122276123

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有