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

Apache Kylin : Analytical Data Warehouse for Big Data

Page tree

Welcome to Kylin Wiki.

1. 在开始之前,需要了解以下概念:

1.1 System Cube(指标数据统计)

在开启 Cube Planner 之后,会生成 5 张 Hive 表(其实我不知道什么时候生成这 5 张 Hive 表的,或者是跑了一个脚本就生成了,然后需要这 5 张 Hive 表才能使 System Cube 生效),这 5 张 Hive 表分别记录了查询和任务的相关指标数据,如查询的响应时间,任务的成功/失败数量,这 5 张 Hive 表也是 System Cube 的基础。

在 Kylin 的 Web GUI 会生成一个项目 KYLIN_SYSTEM,该项目中包含 5 个 Cube,它们就是 System Cube。每一个 System Cube 对应一张 Hive 表,Cube 中根据表字段含义设置了维度列和度量列,因此用户在构建 System Cube 后,可以分析 kylin 系统的相关指标数据。仪表盘页面会显示重要的指标数据。

Hive 表信息请查看:Hive Tables for System Cube

1.2 Dashboard(指标数据展示)

System Cube 能够帮助用户了解查询总数、任务总数、平均查询延迟、平均 Cube 膨胀率这些相对重要的数据,这些数据将在 Dashboard 页面显示。

需要注意的是,每一次在 Kylin 的查询或任务,都会在 Hive 表生成相应的数据,但是数据生成一般是有延迟的(延迟时间可配置)。其次用户需要通过构建 System Cube 将 Hive 表中的数据加载到 Kylin 中,然后才能在 Dashboard 看到相应的指标数据。也就是说一般意义上,Dashboard 中显示的数据并不是最即时的系统数据。

1.3 Cube Planner (Cube 减枝工具)

背景

  • 在 Kylin 中如果不加以控制,滥用维度,可能造成 Cube 膨胀非常厉害,从而占用系统存储,影响查询效率。因此 Kylin 提供了 Cube Planner 功能,该功能能够将利用率低的 Cuboid 剪枝,从而降低膨胀率,提升系统效率。
  • 并不是所有查询都需要通过与它完全匹配的 Cuboid 回答,才能获得最好的查询性能。有时通过父 Cuboid(如[ABC-M1])回答的查询性能也非常优秀,此时我们将子 Cuboid(如[AB-M1])构建出来并不能带来明显的性能提醒,且花费了一定的存储资源,是没有必要的。
  • 还有更多 Cube 剪枝的必要性,这里不再赘述。。

Cube Planner 分为两个阶段:

  • 第一阶段发生于初次构建 Segment 时,Kylin 通过算法及采样数据计算出 Cuboid 推荐列表(是 Cuboid 推荐列表吗?还是维度推荐列表?),然后根据此列表剪枝维度,构建 Cube
  • 第二阶段发生于 Cube 被使用一段时间之后,此时我们拥有了一些查询该 Cube 的指标数据,这些数据就存储在上述 Hive 表中,也能通过 System Cube 被记录。有了这些指标数据后,Kylin 就能够判断哪些 Cuboid 很少被利用,并通过 Cube Planner 推荐用户“剪去”这些 Cuboid,从而得到一个更精炼的 Cube。

1.4 模块关系图

2. 在测试中,需要完成以下内容:

2.1 目标:

  • 本 Test Plan 应该覆盖 Cube Planner,System Cube,Dashboard 的所有内容。
  • 本 Test Plan 能够从用户视角验证 System Cube 生效,Dashboard 指标数据正确,Cube Planner 能够按照预期正确剪枝。

2.2 可能的测试要点

  • 测试 Hive 表:在 Kylin 中做一些操作,如查询,Job 构建,然后查看 Hive 表中的数据是否有变化,变化是否正确 → 
  • 测试 System Cube & Dashboard:构建 System Cube,查看 Dashboard 中的数据是否有变化,变化是否正确 →
  • 测试 Cube Planner 阶段 1 :构建某 Cube 对应的特定的数据集(注意数据量,基数等),构建该 Cube,查看按照 Cube Planner 的算法是否有效的进行 Cuboid 减枝。
  • 测试 Cube Planner 阶段 2:构建某 Cube 下的特定的查询集(如某些 Cuboid 从不击中,某些 Cuboid 总是被击中),执行查询集,构建 System Cube 后通过 Cube Planner 优化 Cube,查看 Cuboid 冷热是否正确,优化建议是否正确 

2.3 待完成的内容:

原理性的问题,待学习:

  • Cube Planner 的阶段 1,两种算法是如何剪枝的,不明白的话会影响该部分的测试,这个我看了多次但是不太明白
  • Cube Planner 的阶段 2,多么冷的 Cuboid 会被剪枝?

实践性的问题,待验证:

  • Dashboard 的指标和 Hive 表列字段及 System Cube 中维度/度量列的关系

测试前环境、数据集的准备工作:2.2 中的第 3、4 条中的数据集和查询集,这也是比较难构建的

  • No labels