kylin cube 增量和全量

全量构建与增量构建性能

全量构建集群

对数据模型中没有指定分割时间列信息的Cube,Kylin会采用全量构建,即每次从Hive中读取所有的数据来开始构建。一般它适用于如下两种情形。
事实表的数据不是按时间增加的。
事实表的数据比较小或更新频率很低,全量构建不会形成太大的开销。请求

 

增量构建数据

Kylin每次都会从Hive中读取一个时间范围内的数据,而后进行计算,并以一个Segment的形式进行保存。下次再构建的时候,会自动以上次结束的时间为起点时间,再选择新的终止时间进行构建。通过屡次构建,Cube中将会有多个Segment依次按时间顺序进行排列,如Seg-1,Seg-2,…,Seg-N。查询的时候,Kylin会查询一个或多个Segment而后再作聚合计算,以便返回正确的结果给请求者。
使用增量构建的好处是,每次只须要对新增数据进行计算,从而避免了对历史数据进行重复计算。对于数据量很大的Cube,使用增量构建是很是有必要查询

 

增量构建引起的问题时间

历史数据刷新分割

Cube构建完成之后,若是某些历史数据发生了改动,那么须要针对相应的Segment进行从新计算,这种构建称为刷新。刷新一般只针对增量构建的Cube而言,由于全量构建的Cube只要从新所有构建就能够获得更新;而增量更新的Cube由于有多个Segment,所以须要先选择要刷新的Segment,而后再进行刷新。模型

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

Cube合并管理

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

合并的好处具体以下:

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

2)因为Segment减小了,所以能够减小查询时的二次聚合,提升了查询性能。

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

相关文章
相关标签/搜索