Apache Kylin权威指南2.4 构建Cube

Apache Kylin权威指南2.4 构建Cube

大家好,又见面了,我是全栈君。

2.4 构建Cube


本节将快速介绍构建Cube相关的操作说明和设置,因受到篇幅的限制,许多具体内容无法深入展开,读者可以从后续的第3章和第4章中获得更详细的介绍。

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

Cube的构建包含如下步骤,由任务引擎来调度执行。

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

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

3)创建并保存字典。

4)保存Cuboid统计信息。

5)创建HTable。

6)计算Cube(一轮或若干轮MapReduce)。

7)将Cube的计算结果转成HFile。

8)加载HFile到HBase。

9)更新Cube元数据。

10)垃圾回收。

以上步骤中,前5步是为计算Cube而做的准备工作,例如遍历维度值来创建字典,对数据做统计和估算以创建HTable等;第6)步是真正的Cube计算,取决于所使用的Cube算法,它可能是一轮MapReduce任务,也可能是N(在没有优化的情况下,N可以被视作是维度数)轮迭代的MapReduce。由于Cube运算的中间结果是以SequenceFile的格式存储在HDFS上的,所以为了导入到HBase中,还需要第7)步将这些结果转换成HFile(HBase文件存储格式)。第8)步通过使用HBase BulkLoad工具,将HFile导入进HBase集群,这一步完成之后,HTable就可以查询到数据了。第9)步更新Cube的数据,将此次构建的Segment的状态从“NEW”更新为“READY”,表示已经可供查询了。最后一步,清理构建过程中生成的临时文件等垃圾,释放集群资源。

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

 

图2-19 任务列表

单击任务右边的“”按钮,展开可以得到任务每一步的详细信息,如图2-20所示。

如果任务中的某一步是执行Hadoop任务的话,那么会显示Hadoop任务的链接,单击即可跳转到对应的Hadoop任务监测页面,如图2-21所示。

如果任务执行中的某一步出现报错,那么任务引擎会将任务状态置为“ERROR”并停止后续的执行,等待用户排错。在错误排除之后,用户可以单击“Resume”从上次失败的地方恢复执行。或者如果需要修改Cube或重新开始构建,那么用户需要单击“Discard”来丢弃此次构建。

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

 

图2-21 MapReduce任务监测页面

2.4.1 全量构建和增量构建

1.?全量构建

对数据模型中没有指定分割时间列信息的Cube,Kylin会采用全量构建,即每次从Hive中读取全部的数据来开始构建。通常它适用于以下两种情形。

事实表的数据不是按时间增长的。

事实表的数据比较小或更新频率很低,全量构建不会造成太大的开销。

2.?增量构建

增量构建的时候,Kylin每次都会从Hive中读取一个时间范围内的数据,然后进行计算,并以一个Segment的形式进行保存。下次再构建的时候,会自动以上次结束的时间为起点时间,再选择新的终止时间进行构建。经过多次构建,Cube中将会有多个Segment依次按时间顺序进行排列,如Seg-1, Seg-2,…,Seg-N。查询的时候,Kylin会查询一个或多个Segment然后再做聚合计算,以便返回正确的结果给请求者。

使用增量构建的好处是,每次只需要对新增数据进行计算,从而避免了对历史数据进行重复计算。对于数据量很大的Cube,使用增量构建是非常有必要的。

图2-22是构建一个Segment的Cube时的输入框,需要用户选择时间范围。

 

图2-22 提交增量构建

在从Hive读取源数据的时候,Kylin会带上此时间条件,如图2-23所示。

 

图2-23 增量构建的SQL

增量构建抽取数据的范围,采用了前包后闭的原则,即包含了开始时间,但不包含结束时间,从而保证上一个Segment的结束时间与下一个Segment的起始时间相同,但数据不会重复。

下一次构建的时候,起始时间必须是上一次的结束时间。如果使用Kylin的Web GUI触发,那么起始时间会被自动填写,用户只需要选择结束时间。如果使用Rest API触发,用户则需要确保时间范围不会与已有的Segment有重合。

2.4.2 历史数据刷新

Cube构建完成以后,如果某些历史数据发生了改动,那么需要针对相应的Segment进行重新计算,这种构建称为刷新。刷新通常只针对增量构建的Cube而言,因为全量构建的Cube只要重新全部构建就可以得到更新;而增量更新的Cube因为有多个Segment,因此需要先选择要刷新的Segment,然后再进行刷新。

图2-24是提交刷新的请求页面,用户需要在下拉列表中选择一个时间区间。

 

图2-24 刷新已有的Segment

提交以后,生成的构建任务与最初的构建任务完全一样。

在刷新的同时,Cube仍然可以被查询,只不过返回的是陈旧数据。当Segment刷新完毕时,新的Segment会立即生效,查询开始返回最新的数据。老Segment则成为垃圾,等待回收。

2.4.3 合并

随着时间的迁移,Cube中可能会存在较多数量的Segment,使得查询性能下降,并且会给HBase集群管理带来压力。对此,需要适时地将一些Segment进行合并,将若干个小Segment合并成较大的Segment。

合并的好处具体如下。

合并相同的Key,从而减少Cube的存储空间。

由于Segment减少了,因此可以减少查询时的二次聚合,提高了查询性能。

HTable的数量得以减少,更便于集群的管理。

下面来看看合并的操作步骤,图2-25中的Cube有两个Segment。

现在触发一个合并,单击Actions →Merge;选择要合并的起始Segment和结束Segment,生成一个合并的任务,如图2-26所示。

 

图2-26 提交合并任务

合并的时候,Kylin将直接以当初各个Segment构建时生成的Cuboid文件作为输入内容,而不需要从Hive加载原始数据。后续的步骤跟构建时基本一致。直到新的HTable加载完成后,Kylin才会卸载旧的HTable,从而确保在整个合并过程中,Cube都是可以查询的。

合并完成之后,此Cube的Segment减少为1个,如图2-27所示。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/108545.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 移动端(手机及平板)禁止用户缩放/拖动网页

    移动端(手机及平板)禁止用户缩放/拖动网页

    2021年11月17日
  • contentWindow,[通俗易懂]

    contentWindow,[通俗易懂]a>contentWindow兼容各个浏览器,可取得子窗口的window对象。b>contentDocumentFirefox支持,>ie8的ie支持。可取得子窗口的

  • linux有必要安装杀毒软件吗_linux杀毒软件企业版

    linux有必要安装杀毒软件吗_linux杀毒软件企业版据有些Linux用户在Linux操作系统下使用360安全卫士国产系统适配专版反馈称:有时会显示有木马,或是误报。比方在Deepin系统中用商店安装的360安全卫士在扫描时报有木马,如下图所示:误报依据经验证,这是误报,如果有Linux用户出现相同的情况,可不需要做其他的处理。判断依据是:木马就是任务栏上的快捷方式?显然不是。同时,360杀毒国产系统适配专版在扫描时也出现误报的情况,如下图:其实在L…

  • 本工作站与主域失去信任_电脑域改为工作组后无法登录

    本工作站与主域失去信任_电脑域改为工作组后无法登录Windows7系统在WindowsServer2003中的加域问题,加域时提示:此工作站和主域间的信任关系失败。故障原因:故障原因:这个问题是由于登陆windowsserver2003的域控制器(DC)的网络服务是服务器无法辨识其DS_WEB_SERVICE_REQUIRED值引起的。简单点儿来说,就是服务器不认windows7.了解计算机七层协议的人都知…

    2022年10月18日
  • ffmpeg下载安装教程_Anaconda安装ffmpeg

    ffmpeg下载安装教程_Anaconda安装ffmpeg最近在处理一些音频数据,ffmpeg是一款非常好用处理音视频的工具包。那什么是ffmpeg呢?FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,可以结合Java开发一些处理视频音频的功能。1.ffmpeg下载首先打开ffmpeg官网下载然后点击windows对应的图标,再点击下面的”WindowsEXEFile”随便选一个点进去选择一个版本下载。2.下载后解压,配置环境变量下载解压后就能在bin文件夹下能看到三个可执行程序:ffmpeg、ffpl

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号