云原生虚拟数仓 PieCloudDB Database,采用存算分离架构,打造了全新的 eMPP(elastic MPP)架构,具备高弹性、高安全、高在线,赋能企业的数字化转型。PieCloudDB 打造了向量化执行引擎、全新的存储引擎 JANM、元数据管理系统 MUNDO 等组件,通过聚集下推、数据裁剪等功能来进一步提升查询效率。本文将介绍 PieCloudDB 如何打造并行计算加速技术来提升查询性能。
在部署集群的过程中,PieCloudDB 在每个物理节点会配置一定数量的执行器(Executor)。这种配置策略确保了在面对高并发需求时,集群依然能够保持高度的可用性。然而,单个查询在执行过程中可能会受到执行器数量的限制,会对 CPU 的充分利用、磁盘 I/O 的性能以及网络带宽的利用效率造成一定影响。
为了解决这一性能瓶颈,进一步提高单个查询下的 CPU、磁盘和网络利用率,PieCloudDB 打造并启用了基于执行器的并行计算加速功能。这项技术不仅与 PostgreSQL 的并行工作器(parallel worker)机制相得益彰,还扩展了其功能,支持并行扫描(parallel scan)、并行连接(parallel join)和并行聚合(parallel agg)。由于并行连接和并行聚合的技术细节已经在众多文献中被广泛讨论,本文将不再赘述这些内容。本文将围绕如何通过 PieCloudDB 元数据管理系统 MUNDO 的缓存预取技术,优化存储引擎 JANM 的统一存储架构,显著提升并行扫描的性能,来提高磁盘 I/O 和网络带宽的利用率。
作为一款分布式数据库,PieCloudDB 的每个计算集群由一个协调器(Coordinator)和多个执行器(Executor)构成。其整体架构如下图所示:
PieCloudDB 计算集群架构
对于一个普通查询,每个 Executor 节点会启动一个(不启动并行计算)或者多个(启动并行计算)扫描进程来对需要的文件进行扫描。同时,主节点中的元数据管理系统 MUNDO 会下发需要扫描的文件信息到每个物理节点上的 MUNDO 服务进程中。然后扫描进程会通过 MUNDO 服务进程获取该进程需要扫描的文件具体信息,之后,扫描进程通过存储引擎简墨(JANM)来对需要的数据文件进行扫描和处理。
下面将为大家详细介绍 PieCloudDB 并行计算加速原理。PieCloudDB 并行计算加速过程可以根据执行过程被分为三个步骤:
2.1 文件列表的分批处理与推送
由于 PieCloudDB 采取元数据-计算-存储分离的架构,用户数据通过透明加密,被统一存储在外部对象存储中(S3、HDFS 等)。当一个查询被发起时,元数据管理系统 MUNDO 将扫描该查询计划,从 存储引擎 JANM 智能地识别出所需的文件列表,分析列表的文件特征,对文件列表进行高效分批处理,并将第一批文件推送到物理节点上的 MUNDO 服务进程。
2.2 MUNDO 的预取与文件分配
MUNDO 服务进程再接受到第一批文件列表后,会立即进入预取模式。预取数量根据物理节点上每个扫描进程的预取需求以及缓存大小和数据文件大小计算得出。当获取到预取列表,MUNDO 服务便向存储引擎 JANM 发起下载请求,同时,parallel scan 扫描进程也向 MUNDO 服务发起文件获取请求。由于这是扫描进程的首次启动,MUNDO 服务会根据预取列表进行文件分配。随后,扫描进程读取文件,获取用户数据,进入查询阶段。
2.3 查询阶段
在当前文件扫描完成后,扫描进程会向 MUNDO 服务发出获取下一个文件的请求。MUNDO 服务在收到请求后,会根据该进程之前扫描过的文件特征,向其发送亲和性更高的文件进行扫描。因为 PieCloudDB 是基于火山模型的 PULL 模型,数据需要在不同的算子中迁移,这种策略的目的是减少数据在不同算子(非本地算子,即其他计算节点中的算子进程)间的迁移。
当并行度提高,例如在并行连接(parallel join)和并行聚合(parallel agg)操作中,数据迁移率会相应增加,这可能会限制并行度,甚至导致性能下降。因此,通过向扫描进程分配亲和性更高的数据文件,PieCloudDB 能够有效减少数据迁移,优化性能。
同样,在预取过程中,MUNDO 服务进程在通过 JANM 统一存储拉取远端数据文件时,也会考虑一并将文件的亲和性特征发送给 JANM,以进一步优化数据访问。
对于并行计算,PieCloudDB 利用 GUC 参数 pdb_parallel_factor 来控制并发度。目前,由于受到达奇优化器的技术限制,这个并发度必须以执行器的数量为倍数进行配置。未来,PieCloudDB 将支持不依赖达奇优化器的更灵活通用的并发度配置方式,以进一步提升系统的性能和灵活性。
启用并发度控制后,PieCloudDB 在单个查询性能方面取得了显著的飞跃。在 32 倍并发度的范围内,PieCloudDB 实现了接近线性的性能增长。如下图所示,PieCloudDB 在启用 6 倍并发度时,在 TPC-H 基准测试中所取得的性能提升效果,充分证明了 PieCloudDB 在高并发环境下的强大处理能力。
PieCloudDB 实现性能线性提升
未来,我们将在 PieCloudDB 并行计算功能上进行继续深度优化,并引入更多现代并行技术,确保 PieCloudDB 在各种复杂场景下都能展现出卓越的性能,无论是在数据密集型的查询操作,还是在需要高并发处理的实时应用中,为用户提供更加可靠、高效的数据计算体验。
相关博文