- 基于kylin-3.0
并发粒度优化
- 当segment中某一个Cuboid的大小超出一定阈值,系统会将该Cuboid的数据分片到多个分区中,以实现Cuboid数据读取的并行化,从而优化Cube的查询速度。具体实现方式如下:
- 构建引擎根据Segment估计大小,以及参数
kylin.hbase.region.cut
的设置决定Segment在存储引擎中总共需要几个分区来存储,如果存储引擎时HBase,那么分区数量就对应HBase中Region的数量。kylin.hbase.region.cut
的默认值时5.0,单位是吉字节(GB),也就是说,对于一个大小估计是50GB的Segment,构建引擎会分配给他10个分区。用户还可以通过设置kylin.hbase.region.count.min
(默认为1)和kylin.hbase.region.count.min
(默认为500)两个配置来决定每个Segment最少或者最多被划分到多少个分区。 - 由于每个Cube的并发粒度控制不尽相同,建议在
Cube Designer
的Configuration Overwrites
中为每个Cube量身定制控制并发粒度的参数。在下面的例子中,将当前的Cube的kylin.hbase.region.count.min
设置为2,把kylin.hbase.region.count.max
设置为100。这样无论Segment的大小如何变化,他的分区数量最低不会低于2,最大不会超过100。相应地,这个Segment背后的存储引擎(HBase)为了存储这个Segment,也不会使用小于2个或者超过100个分区(Region),我们将kylin.hbase.region.cut
设置为1,这样,50G的Segment基本上就会被分配到50个分区,相比默认设置,我们的Cuboid可能最多会获得5倍的并发量。
网友评论