THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!

Apache Kylin : Analytical Data Warehouse for Big Data

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
indent15px
printablefalse

一. 背景

Apache Kylin 2v2.3 发布后, Kylin team 发布了 System Cube 和 Dashboard, 使得 Kylin 用户可以更加容易地收集和观测 Kylin 本身应用级别的 Metrics 信息. 在目前版本的 Kylin, 中 Kylin 发布了系统 Cube(System Cube) 和仪表盘 (Dashboard) 功能, 使得用户可以更加容易地收集和观测 Kylin 本身运行时的各项指标。 通过配置 System Cube 为 HiveSink 或者 KafkaSink, 可以将 Metrics 信息发布到对应的 Sink, 并且通过触发构建任务可以构建 System Cube 以满足系统管理员通过 SQL 查询 Kylin的系统信息的需求. 此外, 借助 Dashboard 用户可以轻松地做到 Kylin 系统监控信息的可视化分析.

在 Kylin 3.0, Kylin team 发布了另外一个特性, 也就是 Real-time OLAP, 可以使得用户可以实时地获取和查询流式数据源.

信息发布到对应的存储(Hive 或 Kafka), 随后通过触发构建任务,可以将指标汇总进入 System Cube,从而满足系统管理员通过 SQL 查询获取 Kylin 系统信息的需求;借助仪表盘用户可以轻松地做到 Kylin 系统监控信息的可视化分析。System Cube 中的数据,如查询历史、查询延迟等信息,也对后续 Cube 的自动优化(Cube planner 二阶段优化)奠定了基础,具有非常高的价值。

然而,从 Hive/Kafa 中批次加载数据进入 System Cube,存在调度以及较长的数据加载延迟;Kylin 3.0 发布了 Real-time OLAP的新特性, 可以使得用户可以实时地获取和查询流式数据源;所以在这里, 将尝试如何将 Real-time OLAP 和 System Cube 相集成, 简化 System Cube 的数据加载并降低数据准备延迟。 这里, 我尝试探索如何将 System Cube 和 Real-time OLAP 相集成, 来降低 System Cube 的数据准备延迟. 经过调研, System Cube 本身已经包含了 KafkaSink, 所以需要的工作是修改 SCCreator, 使之能准备 Real-time OLAP 所需的 Cube 元数据, 和一些其它适配工作.

二. 设计

Metrics System

eBay 引入的 System Cube 特性中, 首先需要收集 Metrics 信息, 然后基于 Cubing Engine 来构建 System Cube. 通过下图所示的 Metrics System 可以获取和汇报 Job 和 Query 主题的消息到不同的 Sink. Metrics System 代码主要包含在 core-metricsmetrics-reporter-hivemetrics-reporter-kafka 三个 Maven module中module 中, 另外还有 QueryMetricsFacadeJobMetricsFacade.

...

在 Metrics Event 的输入部分, Kylin team 基于门面模式的设计, Job 和 Query 相关的消息被对应的门面 (QueryMetricsFacadeJobMetricsFacade) 封装成统一的 RecordEvent. Query 和 Job 相关的记录会分别由对应的门面来负责进行加工, 然后通过 MetricsManagerupdate 方法统一发送给 Metrics System.

...

在 Metrics System 之外, 我们还需要工具来创建 System Cube 来获取来分析落到不同 Sink 的数据, 这块的工作由 SCCreator 负责. 由创建出来的 Cube 称之为 System Cube, 负责。System Cube 一共有5个. SCCreator 需要一个 json指定System Cube 所需的一些配置项所需的配置项. 最终通过 SCCreator 我们会获取完成一系列所需要的准备工作, 包括用于创建 Hive Table/Kafka Topic 的脚本和包含一系列模型和 Cube 的新的 Project 元数据.

当相关的准备工作完成后, 我们可以使用 corntab 来定时调度构建作业, 这样使得数据源源不断地被构建进入 Kylin, 以便 Dashboard 和 Cube Planner 两者来对其进行查询(消费).

Real-time OLAP

在 Kylin 3.0 中, 我们通过一个新的架构实现流式数据处理的解决方案Kylin 通过一个新的架构实现流式数据处理的解决方案.

我们看下面的架构图请看下面的架构图: 在数据源端, 我们可以通过新增的 通过新增的 Recevier 节点实时地摄入数据节点实时摄入数据, 并且不断地将满足时间条件的数据上传和整合到 HBaseHDFS以及HBase; 在查询端, 通过合并来自 HBase 的历史数据和来自 Receiver 的实时数据, 我们可以获取近乎实时的查询结果可以获取近乎实时的查询结果. 更加详细的分析可以参考技术博客

 http://kylin.apache.org/blog/2019/04/12/rt-streaming-design/ .

集成 System Cube 和 Real-time OLAP

在集成两者的过程中, 我们主要修改 SCCreator, 在这里我们主要适配了 Kafka Topic 和 Real-time OLAP 所需的一些额外元数据的创建工作, 这两个任务分别来由 KafkaTopicCreator 和 StreamingMetadataCreator 来负责, 最后由 SCCreator 来统一调度. 对于 Metrics System 则不需要改动.

三. 如何使用

1. 开启 Metrics 信息收集

Code Block
languagejava
themeRDark
titlekylin.properties
linenumberstrue
kylin.metrics.monitor-enabled=true
kylin.metrics.reporter-job-enabled=true
kylin.metrics.reporter-query-enabled=true
kylin.web.dashboard-enabled=true

...

7. 启动 Kylin 并启用 System Cube

四. 对比

通过将 Sink 设置为 Kafka, 并且使用 Realtime OLAP 来摄入和构建新的 System Cube, 我们可以实现:

  1. Metrics 消息从其产生到其对 Kylin 查询系统可见的延迟, 从之前的小时级别延迟下降为秒级延迟. 这将大大提高 Dashboard 数据展示结果的实时性, 十分有利于问题的及时发现和诊断.
  2. 避免之前的定时调度 Cube 构建任务的步骤, 可以依赖于 Real-time OLAP 来完成摄入和自动化调度构建任务. 

五. 参考链接

http://kylin.apache.org/docs/tutorial/setup_systemcube.html

...