GBASE南大通用GCDW云原生数据仓库多分片并发查询功能介绍

GCDW是南大通用自主研发的基于列存储的海量分布式大规模并行处理的多实例弹性云数据仓库。产品整体架构采用了存储与计算分离设计,保存在GCDW的数据可以分别使用不同规格的Warehouse进行计算。默认情况下使用Warehouse计算时,GCDW的执行器会根据Warehouse的节点数来生成计算任务,并把数据文件划分给计算任务。这一组数据文件的ID被包含在一个计算任务中,随着计算任务被发送到计算节点,为计算节点提供读取数据的依据。

计算任务在计算节点上被执行时,为了提升性能一般采用算子内并行的方式执行。而GCDW可以灵活调整发送给计算节点的任务数的功能,从另一个角度实现了多任务并行计算。因为每个任务计算一组数据分片,因此也被称为多分片并行计算。

多分片并行的使用方式

GCDW 提供参数 gcluster_select_parallel_degree 来控制每个计算节点上的并发执行的任务数。该参数支持 Session 级别和 Global 级别设置。该参数取值为[1,160),取值的大小决定了在每一个计算节点启动的计算任务数。

测试方案及结果

在gcluster_select_parallel_degree分别取值为1、2、4和8 这四种场景下,分别执行tpch 1t的测试。获取并比较四种场景的执行计时,结果如下。

测试环境:

        CPU: 2* Intel Xeon E5-2640v4 2.4GHz/20核

        内存:128G

        硬盘:12*4T SATA 7.2K转速

        网络:万兆

        服务器数量:4

测试版本:9.8.0.5.2

测试过程:

gbase> set gcluster_select_parallel_degree = X

gbase> set gbase_parallel_degree = Y

sh gcdw_tpch/run.sh -l

测试结果:

多分片功能开启后,查询效率随着gcluster_select_parallel_degree增加逐渐提高,在8分片时效率达到最高,提升可达61.7%。

原理分析

多分片并行计算功能增加了一种调整计算并行度的方法。默认情况下GCDW只给一个计算节点发送一个计算任务,通过增加多分片并发参数值,可以做到给一个计算节点发送多个计算任务。这样在计算资源固定的前提下,可以通过增加计算的任务数达到更多任务并行计算的目的。

以两张Hash表的Join为例,计算节点数为2,两张表分别有200行数据。默认情况下,把两张表的部分数据分别发给两个计算节点,做分片对分片的关联。每个节点上的关联的数据量是 100 * 100 。使用了多分片并行计算后,可以调整每个计算节点的任务数为2 。这样节点上每个任务关联的数据量就是 50 * 50 。整体看使用多分片后降低了关联的数据量。

提高分片并行度降低了一个计算任务的数据量,有助于减少任务在算子执行期间不必要的操作,进一步提升性能。默认情况下,发给计算节点的一个任务在算子执行时会根据gbase_parallel_degree设置并行执行。算子内并行执行要求把进入算子的数据进行拆分,算子执行结束时再合并数据传给下一个算子。提高分片的并发度,同时设置gbase_parallel_degree为1可以有效减少算子内拆分数据的步骤。Hash表入库时已经按Hash列切分好了数据,每个计算任务处理一部分Hash分片数据,使用更多的计算任务并行处理所有数据。如下图所求,减少了算子内并行时拆分数据的步骤,利用已切分好的数据分片直接进行计算,达到提升性能的目的。

  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值