基于DPU云盘挂载的Spark优化解决方案

1.  方案背景和挑战

Apache Spark,作为当今大数据处理领域的佼佼者,凭借其高效的分布式计算能力、内存计算优化以及强大的生态系统支持,已牢固确立其在业界的标杆地位。Spark on Kubernetes(简称K8s)作为Spark与Kubernetes这一领先容器编排平台深度融合的产物,不仅继承了Spark的强大数据处理能力,还充分利用了Kubernetes在资源管理、服务发现和弹性伸缩方面的优势,正逐步引领大数据处理迈向更加灵活、高效的新纪元。

与此同时,随着云计算技术的飞速发展,NVMe/TCP云盘作为一种创新的高性能存储解决方案,凭借其在低延迟、高吞吐量以及易于集成到现代云架构中的特点,日益受到大规模数据中心和云环境用户的青睐。这种存储方案通过TCP/IP协议实现远程NVMe设备的直接访问,极大地拓展了数据存取的边界,但也随之带来了特定的技术挑战。

具体而言,NVMe/TCP云盘在利用TCP/IP协议进行数据交互时,不可避免地涉及到了复杂的数据包处理流程,包括用户态与内核态之间的频繁数据拷贝、网络报文的接收、峰值流量的处理以及协议栈的深入解析等。这一系列操作大幅增加了CPU的负担,尤其是在高并发、大数据量场景下,大量CPU资源被非业务核心的数据包处理工作所占用,导致CPU资源利用率低下,甚至成为性能瓶颈。

当Apache Spark试图挂载并利用NVMe/TCP云盘进行大规模数据处理时,上述挑战便显得尤为突出:

1、Spark作业在执行过程中,若频繁遭遇CPU资源被TCP/IP协议栈处理所挤占的情况,不仅会直接限制Spark任务的处理速度,还可能导致任务执行延迟增加,进而影响整个数据处理流水线的吞吐率和效率。

2、由于CPU资源的争夺,Spark原本有望进一步提升的磁盘I/O性能也受到了限制,难以充分发挥NVMe/TCP云盘应有的高性能潜力。

为了解决Spark在挂载NVMe/TCP云盘时面临的CPU资源占用过高和磁盘吞吐性能受限的问题,亟需探索并实施一系列优化策略和技术方案。这可能包括但不限于:采用更高效的数据传输协议或技术(如RDMA),以减少CPU在数据拷贝和网络处理上的负担,提升数据传输性能;优化Spark作业的调度与执行策略,以更加合理地分配CPU资源;以及针对NVMe/TCP云盘特性进行专门的性能调优,如调整TCP窗口大小、优化网络队列配置等。

RDMA技术允许数据在远程主机的内存之间直接传输,无需经过CPU处理,从而极大地降低了数据传输的延迟并减少了CPU的负载。这一特性直接解决了Spark和Kubernetes集群中,尤其是在使用NVMe-oF云盘时,因网络传输效率低下而可能导致的性能瓶颈问题。

本方案通过DPU实现NVMe/RDMA的云盘挂载,从而提升Spark在云环境下处理大数据时的整体性能和效率。

2.  整体方案概述

本方案采用云原生架构,Spark采用Spark on Kubernetes部署模式,并且引入DPU为集群之上的容器提供存储服务的卸载和加速,融合了云原生架构与高性能存储的优势。方案整体架构如下图所示:

  •  存储集群把NVMe存储设备以裸盘方式部署,计算节点通过硬件模拟向宿主机提供标准的nvme/virtio块设备,对存储协议的处理都卸载到DPU,提供硬件加速的NVMe over RDMA能力。
  • K8S平台通过yusur-csi存储插件提供基于DPU的云盘挂载能力。
  • 将Spark应用部署在K8S集群之上,Spark Pod挂载DPU硬件加速的NVMe/RDMA云盘,以更低的资源消耗获得更高的读写效率。

3.  测试方法和结果

3.1. 软件环境

软件包/工具/数据集列表

名称

版本

来源

备注

Spark

3.4.2

社区开源项目

开源大数据处理框架

Java

17.0.10 (Eclipse Adoptium)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值