(51)Row Key 优化

Kylin 会把所有的维度按照顺序组合成一个完整的 Rowkey ,并且按照这个 Rowkey 升序
排列 Cuboid 中所有的行。
设计良好的 Rowkey 将更有效地完成数据的查询过滤和定位,减少 IO 次数,提高查询
速度,维度在 rowkey 中的次序,对查询性能有显著的影响。
Row key 的设计原则如下:
1 )被用作过滤的维度放在前边。

 2)基数大的维度放在基数小的维度前边。

 

4 并发粒度优化
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.max (默认为 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 ,也不会使用小于两个或超
100 个的分区。我们还调整了默认的 kylin.hbase.region.cut ,这样 50GB Segment 基本上
会被分配到 50 个分区,相比默认设置,我们的 Cuboid 可能最多会获得 5 倍的并发量。
(注:相关优化,概念性描述,有一些抽象,不太容易理解,可以查阅相关kyline的资料)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据开发工程师-宋权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值