Apache Kylin权威指南(第2版)
上QQ阅读APP看书,第一时间看更新

2.5 构建Cube

说明 本节简单地介绍了构建Cube的相关操作说明和设置,受篇幅的限制许多具体内容没有深入展开,读者可以从第3章“Cube优化”和第4章“增量构建”中获得更详细的介绍。

新创建的Cube只有定义,而没有计算的数据,它的状态是“DISABLED”,是不会被查询引擎挑中的。要想让Cube有数据,还需对它进行构建。Cube的构建方式通常有两种:全量构建和增量构建,两者的构建步骤是完全一样的,区别只在于构建时读取的数据源是全集还是子集。

Cube的构建包含以下步骤,由任务引擎调度执行:

1)创建临时的Hive平表(从Hive中读取数据);

2)计算各维度的不同值,并收集各Cuboid的统计数据;

3)创建并保存字典;

4)保存Cuboid统计信息;

5)创建HTable;

6)计算Cube(一轮或若干轮计算);

7)将Cube计算结果转成HFile;

8)加载HFile到HBase;

9)更新Cube元数据;

10)垃圾回收。

上述步骤中,前五步是为计算Cube而做的准备工作,如遍历维度值来创建字典,对数据做统计和估算以创建HTable等。第六步是真正的Cube计算,取决于使用的Cube算法,它可能是一轮MapReduce任务,也可能是N(在没有优化的情况下,N可以被视作维度数)轮迭代的MapReduce。

由于Cube运算的中间结果是以SequenceFile的格式存储在HDFS上的,所以为了导入HBase,还需要进行第七步操作,将这些结果转换成HFile(HBase文件存储格式)。第八步通过使用HBase BulkLoad工具,将HFile导入HBase集群,这一步完成后,HTable就可以查询到数据。第九步更新Cube的数据,将此次构建的Segment的状态从“NEW”更新为“READY”,表示已经可供查询。最后一步,清理构建过程中生成的临时文件等垃圾,释放集群资源。

Monitor页面会显示当前项目下近期的构建任务。图2-24中显示了一个正在运行的Cube构建任务,当前进度46.67%。

图2-24 Cube构建任务列表

点击任务右边的“>”按钮,可以将其展开得到该任务每一步的详细信息,如图2-25所示。

图2-25 Cube构建任务步骤列表

如果Cube构建任务中的某一步骤是执行Hadoop任务的话,会显示Hadoop任务的链接,点击即可跳转到Hadoop对应的任务监测页面,如图2-26所示。

图2-26 Hadoop任务

如果任务执行中的某一步骤报错,任务引擎会将任务状态置为“ERROR”并停止后续操作的执行,等待用户排错。在错误排除后,用户可以点击“Resume”从上次报错的位置恢复执行。或者如果需要修改Cube或重新开始构建,用户需点击“Discard”来放弃此次构建。

接下来介绍几种不同的构建方式。