前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Kylin原理与架构

Apache Kylin原理与架构

作者头像
用户5252199
发布2022-04-18 14:11:10
1.2K0
发布2022-04-18 14:11:10
举报
Kylin的介绍

Apache Kylin是一个开源的大数据分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力(可以把Kylin定义为OLAP on Hadoop)。Apache Kylin于2015年11月正式毕业成为Apache基金会(ASF) 顶级项目,是第一个由中国团队完整贡献到Apache的顶级项目。

Apache Kylin作为OLAP引擎包含了从数据源(Hive/Kafka等获取源数据,基于MapReduce构建多维立方体(Cube),并充分利用HBase的列式特性来分布式的存储立方体数据,提供标准SQL解析与查询优化,以及ODBC/JDBC驱动及REST API等多个模块。可插拔的灵活架构,允许支持更多的数据源接入Kylin,也支持采用其它技术作为存储引擎。

Kylin的工作原理

Kylin的核心思想是预计算,即对多维度可能用到的度量进行预计算,将计算好的结果保存到Cube并写入到HBase中,这样在查询的时候直接查询HBase即可。Kylin拥有很好的快速查询能力和高并发处理能力,原因是kylin将高复杂度和多表连接操作转换成预计算结果的查询。

Kylin的一个主要特点之一就是 空间换时间。

kylin的计算逻辑:

介绍两个kylin中的两个概念:cube和cubeid

Cubeid:kylin中将维度任意组合成为一个cubeid

Cube :kylin中将所有维度组合为一个cube,即包含所有的cubeid

如上图:

假设我们有4个dimendisons(time,item,location,supplier),这个cube中每个节点都是这4个dimension的不同组合,每个组合定义了一组分析的dimension,meature的聚合结果就保存在cubeid中,查询时根据sql找到对应的cubeid。读取meature的值,返回即可。

kylin组件介绍

  • 核心组件:Kylin的OLAP引擎框架包括元数据引擎、查询引擎、作业引擎、存储引擎以及用来处理客户端请求的REST服务器
  • 元数据管理工具(Metadata Manager): Kylin是一款元数据驱动型应用程序。元数据管理工具是一大关键性组件,用于对保存在Kylin当中的所有元数据进行管理,其中包括最为重要的cube元数据。其它全部组件的正常运作都需以元数据管理工具为基础,包括cube的定义,星状模型的定义、job的信息、job的输出信息、维度的directory信 息等等,元数据和cube都存储在hbase中,存储的格式是json字符串,除此之外,还可以选择将元数据存储在本地文件系统
  • 任务引擎(Job Engine): 这套引擎的设计目的在于处理所有离线任务,其中包括shell脚本、Java API以及Map Reduce任务等等。任务引擎对Kylin当中的全部任务加以管理与协调,从而确保每一项任务都能得到切实执行并解决其间出现的故障
  • 存储引擎(Storage Engine): 这套引擎负责管理底层存储——特别是cuboid,其以键-值对的形式进行保存。存储引擎使用的是HBase——这是目前Hadoop生态系统当中最理想的键-值系统使用方案。Kylin还能够通过扩展实现对其它键-值系统的支持,例如Redis
  • REST Server: REST Server是一套面向应用程序开发的入口点,旨在实现针对Kylin平台的应用开发工作。 此类应用程序可以提供查询、获取结果、触发cube构建任务、获取元数据以及获取用户权限等等。
  • ODBC驱动程序:为了支持第三方工具与应用程序——例如Tableau——我们构建起了一套ODBC驱动程序并对其进行了开源。我们的目标是让用户能够更为顺畅地采用这套Kylin平台
  • jdbc驱动程序:kylin提供了jdbc的驱动,驱动的classname为org.apache.kylin.jdbc.Driver,使用 的url的前缀jdbc:kylin:,使用jdbc接口的查询走的流程和使用RESTFul接口查询走的内部流程是相同的。这类接口也使得kylin很 好的兼容tebleau甚至mondrian。
  • 查询引擎(Query Engine):当cube准备就绪后,查询引擎就能够获取并解析用户查询。它随后会与系统中的其它组件进行交互,从而向用户返回对应的结果,kylin使用一个开源的Calcite框架实现SQL的解析,相当于SQL引擎层
  • Routing:该模块负责将解析SQL生成的执行计划转换成cube缓存的查询,cube是通过预计算缓存在hbase中,这部分查询是可以再秒级甚至 毫秒级完成,而还有一些操作使用过查询原始数据(存储在hadoop上通过hive上查询),这部分查询的延迟比较高。
  • Cube构建引擎:这个模块是所有模块的基础,它负责预计算创建cube,创建的过程是通过hive读取原始数据然后通过一些mapreduce计算生成Htable然后load到hbase中

kylin架构体系

kylin通常从hive中读取数据源,使用mapreduce作为cube构建引擎(目前也支持spark 不过是beta版本),并把预计算结果保存在HBase中,对外暴露Restful API/JDBC/ODBC的查询接口。kylin支持标准的ANSI SQL ,所以可以和常用分析工具(如superset,Excel等)进行无缝连接。

kylin模块架构图:

1 ):数据源Hadoop /Hive

上面也说到,kylin通常从hive中读取数据,使用mr进行预计算,kylin获取的表时星型结构的,也就是包括一张事实表和多张唯独表,如果遇到业务场景比较复杂,那么可能就要考虑在Hive中先进行一些处理,比如宽表或者视图(后面会在优化篇章中进一步讲到)。

2 ):存储模块HBase

HBase时kylin中用来存储OLAP分析的Cube数据的地方,实现多维数据集的交互查询

3 ):Kylin内部核心模块

REST Server :提供了Restful 接口,通过restfule接口我们可以很方便的对kylin进行一些操作,比如:创建cube,获取元数据信息,动态配置等。

Query Engine :kylin使用开源的框架calcite来进行sql解析,calcite实现的功能是提供了JDBC Interface ,接收用户的查询请求。然后转换为逻辑执行计划

Routing :负责将解析Sql生成的执行计划转换成Cube缓存的查询,Cube是通过预计算缓存在HBase中,这部分是在秒级甚至毫秒级完成的

Metadata:Kylin中包含了大量的元数据信息,包括cube的定义,星型模型的定义,job的执行和输出信息,模型的维度信息等。kylin的元数据信息和cube信息都存储在hbase中

cube build engine :这个是所有模块的基础,主要负责kylin预计算中创建cube,创建的过程首先通过hive读取原始数据,然后通过一些mapreduce/spark计算生成Htable,最后将数据load到HBase表中。

4):kylin对外接口

kylin对外提供了REST API 和 JDBC/ODBC,从而方便第三方web和基于sql的BI工具接入,比如superset,power bi等。

kylin提供的JDBC驱动的classname为org.apache.kylin.jdbc.Driver, url前缀为jdbc:kylin:;使用jdbc接口和使用restful接口走的流程是相同的

kylin的特性和生态圈

- 可扩展超快OLAP引擎:

Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计

- Hadoop ANSI SQL 接口:

Kylin为Hadoop提供标准SQL支持大部分查询功能

- 交互式查询能力:

通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能

- 多维立方体(MOLAP Cube):

用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体

- 与BI工具无缝整合:

Kylin提供与BI工具,如Tableau,的整合能力,即将提供对其他工具的整合

- 其他特性:

- Job管理与监控

- 压缩与编码

- 增量更新

- 利用HBase Coprocessor

- 基于HyperLogLog的Dinstinc Count近似算法

- 友好的web界面以管理,监控和使用立方体

- 项目及立方体级别的访问控制安全

- 支持LDAP

kylin生态圈

Kylin 核心: Kylin OLAP引擎基础框架,包括元数据(Metadata)引擎,查询引擎,Job引擎及存储引擎等,同时包括REST服务器以响应客户端请求

扩展: 支持额外功能和特性的插件

整合: 与调度系统,ETL,监控等生命周期管理系统的整合

用户界面: 在Kylin核心之上扩展的第三方用户界面

驱动: ODBC 和 JDBC 驱动以支持不同的工具和产品,比如Tableau

资料参考:

http://kylin.apache.org/cn/

书籍:基于kylin构建大数据分析平台

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术博文 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档