Apache Kylin : Analytical Data Warehouse for Big Data
Page History
...
2.2 Cube Planner Whole Process
前五步为 Cube Planner 阶段一,后五步为 Cube Planner 阶段二。
- Cube Planner 第 1 阶段发生在首次构建 Cube 时。在进入 Cube Planner 第 1 阶段之前,系统将预估每个 Cuboid 的行数和存储大小,这些预估的行数与存储大小将应用于 Cube Planner 算法中。Cube Planner 的算法选择(贪心算法或基因算法)与静态规则剪枝后的 Cuboid 个数有关。
- 假设提交构建时根据静态规则剪枝生成的 Cuboid 列表为 Recommend Cuboid List 0,在 Cube Planner 第 1 阶段,系统将根据数据特征计算 Recommend Cuboid List 0 中每个 Cuboid 的构建收益比,将构建收益比小的 Cuboid 从 Recommend Cuboid List 0 删除,生成 Recommend Cuboid List 1。
- 根据 Recommend Cuboid List 1 构建 Cube 的第 1 个 Segment,并记录 Segment 1 中每个 Cuboid 的 HyperLogLog,记录的 HyperLogLog 在 Cube Planner 中用于计算 Cuboid 的行数和存储大小,这是在第一个 Build Job 中完成的。
- 根据 Recommend Cuboid List 1 构建 Cube 的第 2 个 Segment,并记录 Segment 2 中每个 Cuboid 的 HyperLogLog,这是在第二个 Build Job 中完成的。
- 根据 Recommend Cuboid List 1 构建 Cube 的第 3 个 Segment,并记录 Segment 3 中每个 Cuboid 的 HyperLogLog,这是在第三个 Build Job 中完成的。
- 在构建第一个 Segment 之后,如果开启 System Cube,系统就会收集查询相关的指标数据。经过一段时间使用 Kylin,Cube Planner 第 2 阶段将发挥作用,此阶段将根据系统收集的用户查询指标及原始数据特征重新计算构建收益比。Cube Planner 算法的选择依然与 Cuboid 个数有关。并且根据 Cuboid 的使用频率,在计算构建收益比时会增加 Cuboid 的权重,即查询越多的 Cuboid 权重越大,反之越少。
- 重新计算每个 Cuboid 的构建收益比后会生成 Recommend Cuboid List 2。这里会使用到第三、四、五步中记录的 3 个 Segments 中每个 Cuboid 的 HyperLogLog,重新预估每个 Cuboid 的行数和存储大小。
- 根据 Recommend Cuboid List 2 构建 Cube 的第 4、5、6 个 Segment,它们的时间范围分别对应 Segment 1、Segment 2 和 Segment 3 的时间范围,同时记录 Segment 4、Segment 5 和 Segment 6 中每个 Cuboid 的 HyperLogLog,这是分别在三个 Optimize Job中完成的。同时需要注意,系统将根据 Base Cuboid(包含 Cube 中所有维度的 Cuboid) 的数据重新构建 Cube,而不是使用数据源中的原始数据,这也是说,如果源数据有变化,此时的 Optimize Job 并不会刷新 Cube 数据。
- 在进行 Cube Planner 第二阶段优化时,会同时生成一个 Optimize Checkpoint Job,这个任务会在新的 Cube 数据构建完成之后,删除旧的 Cube 数据,并且更新 Cube 元数据,从而保证数据一致性。在当前例子中将删除原有的 Segment 1,Segment 2 和 Segment 3,接下来的查询会使用优化后的 Segment 4,Segment 5 和 Segment 6。
- 系统将持续收集用户的查询指标数据,用户可以一段时间后继续触发 Cube Planner第二阶段来优化 Cube,并且持续优化 Cube。
...
Overview
Content Tools
ThemeBuilder
Apps