kylin3.1.x 架构和原理

架构

数据源

主要是Hive、Kafka

REST Server

提供一些restful接口,对 project、Models、cube 等元数据管理、用户访问权限、系统配置动态修改等。除此之外还可以通过该接口实现 SQL 的查询,这些接口一方面可以通过第三方程序的调用,另一方也被kylin的web界面使用。

jdbc/odbc接口

kylin提供了jdbc的驱动,使用 jdbc 接口的查询走的流程和使用RESTFul接口查询走的内部流程是相同的。

Query引擎

kylin使用一个开源的Calcite框架实现SQL的解析,相当于SQL引擎层。

Routing

该模块负责将解析 SQL 生成的执行计划,转换成cube缓存的查询,查询以 秒级、毫秒级完成

Metadata

kylin中有大量的元数据信息,包括cube的定义,星状模型的定义、job的信息、job的输出信息、维度的directory信息等等,元数据和cube都存储在hbase中,存储的格式是json字符串

Build Engine(构建引擎)

是所有模块的基础,负责预计算创建cube,创建的过程是通过hive读取原始数据,然后通过一些 mapreduce 或 spark 计算

然后保存到 hbase

存储(Storage Engine)

存储引擎使用的是HBase

原理

Kylin的核心思想是 预计算

以空间换时间,即多维分析可能用到的度量进行 预计算,将计算好的 结果保存成Cube并存储到 HBase 中,供查询时直接访问。

流程

预计算

将数据源(如Hive)中的数据按照指定的 维度 和 指标,由计算引擎 mapreduce 或 spark 离线计算出 所有可能的查询结果 (即Cube)

存储

将上面的查询结果,存储到HBase中

HBase中每行记录的 rowkey 由各维度的值拼接而成,度量会保存在column family 中

查询

利用 HBase 列存储的特性,可以提供 快速响应 和 高并发 的查询


原文出处:/show_1IX2IGIFwLyj.html