摘要:GCDW是南大通用自主研发的基于列存储的海量分布式大规模并行处理的多实例弹性云数据仓库。产品整体架构采用了存储与计算分离设计,保存在GCDW的数据可以分别使用不同规格的Warehouse进行计算。默认情况下使用Warehouse计算时,GCDW的执行器会根据W
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分片数据,使用更多的计算任务并行处理所有数据。如下图所求,减少了算子内并行时拆分数据的步骤,利用已切分好的数据分片直接进行计算,达到提升性能的目的。
来源:GBASE南大通用