如何利用DPU加速Spark大数据处理? | 总结篇

本文围绕Apache Spark展开,指出其在数据处理中面临CPU瓶颈、Shuffle效率低等挑战。采用软硬件结合方案,在数据加载、离线计算、数据传输三方面加速。核心加速阶段各环节优势显著,整体加速效果良好,最后提及现有优势、不足及未来完善架构、拓展加速场景的规划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、总体介绍

1.1 背景介绍

近年来,随着存储硬件的革新与网络技术的突飞猛进,如NVMe SSD和超高速网络接口的普及应用,I/O性能瓶颈已得到显著改善。然而,在2020年及以后的技术背景下,尽管SSD速度通过NVMe接口得到了大幅提升,并且网络传输速率也进入了新的高度,但CPU主频发展并未保持同等步调,3GHz左右的核心频率已成为常态。

在当前背景下Apache Spark等大数据处理工具中,尽管存储和网络性能的提升极大地减少了数据读取和传输的时间消耗,但Apache Spark框架基于类火山模型的行式处理,在执行复杂查询、迭代计算时对现代CPU并行计算特性和向量化计算优势的利用率仍然有待提高。同时,传统TCP/IP网络通信模式下,CPU承担了大量的协议解析、包构建和错误处理任务,进一步降低了整体数据处理效率,这导致Apache Spark 在实际运行中并没有达到网络、磁盘、CPU的IO瓶颈。

1.2 挑战和困难

f0b89da05eb634aed8eb7038389c7947.jpeg

在Apache Spark的数据处理流程中,如上图所示,整个过程从数据源开始,首先经历数据加载阶段。Spark作业启动时,任务被分配到各个运算节点(executor),它们从诸如HDFS、S3(Amazon Simple Storage Service)或其他支持的存储系统中高效地获取数据。

一旦数据成功加载至内存或磁盘上,运算节点首先开始数据的解压缩工作,然后执行相应的计算操作,例如map、filter、reduceByKey等转换操作。

接下来,在执行涉及不同分区间数据交换的操作(如join、groupByKey)时,Spark会触发Shuffle阶段。在这个阶段,各个executor将计算后的中间结果按照特定键值进行排序,并通过网络传输至其他executor,以便进行进一步的合并和聚集操作。

完成Shuffle后,数据再次经过一轮或多轮计算处理,以产出最终结果。当所有任务完成后,结果数据会被压缩后写回目标存储系统,如HDFS、数据库或其他外部服务,从而完成整个数据处理生命周期。

综上所述,在Apache Spark的数据处理过程中,尽管其设计高度优化,但仍面临多个技术挑战:

首先,传统硬件中,数据传输需要CPU解码并通过PCIe总线多次搬运至内存和硬件,使用反弹缓冲区,虽然是临时存储但也增加复杂度与延迟;列式存储(Parquet、ORC)高效压缩同类数据减少I/O,但读取时的解压和编解码操作加重了CPU负担,尤其在仅需处理部分列时效率下降;Apache Spark采用行式处理,如DataSourceScanExec按行扫描可能导致冗余加载,并因频繁调用“next”及虚函数引发CPU中断,全行扫描对部分列查询性能损耗显著。

其次,随着数据量不断激增以及IO技术的提升,基于CPU的优化带来的收益越来越不明显,传统的CPU算力逐渐成为计算瓶颈。在涉及特定算子操作时,性能问题尤为突出。例如,高散列度数据的 join,高散列度数据的 aggregate。在执行join操作时,尤其当采用基于哈希的join策略时,因为数据散列程度越高,哈希计算的负载就越大,对CPU和内存的计算能力要求也就越高。哈希计算是一个计算密集型任务,需要CPU执行大量的计算操作,并且可能涉及到内存的读取和写入。当数据散列程度较高时,哈希计算的复杂度增加,可能导致CPU和内存的使用率增加,从而影响系统的整体性能。其次,数据散列程度较高可能会增加哈希冲突的概率,进而影响内存的使用效率。当哈希冲突较多时,可能需要额外的操作来解决冲突,例如使用链表或者开放地址法来处理冲突。这些额外的操作可能会占用额外的内存空间,并且增加内存的读写次数,从而降低内存的使用效率。

此外,Shuffle作为Spark计算框架中决定整体性能的关键环节之一,其内部包含了多次序列化与反序列化过程、跨节点网络传输以及磁盘IO操作等复杂行为。这些操作不仅增加了系统开销,而且可能导致数据局部性的丧失,进一步拖慢整个任务的执行速度。因此,如何优化Shuffle过程,减小其对系统资源的影响,是Spark性能调优的重要方向。

因此,面对硬件条件的新格局,开发者不仅需要深入研究如何优化Apache Spark内部机制以适应大规模并行计算需求,还应探索将特定类型的数据运算任务转移到诸如GPU、FPGA或其他专用加速器等更高效能的硬件上,从而在CPU资源有限的情况下,实现更高层次的大数据处理性能提升。

二、整体方案

我们采用软硬件结合方式,无侵入式的集成Apache Spark,并在Spark数据计算全链路的3大方面都进行了全面提升和加速。

c0096a003a16ab6ba8fc1bec8798c60d.jpeg

「数据加载」方面,自研的DPU数据加载引擎直读硬件存储的数据到计算卡中,优化掉大量的内存与加速卡的PCIe数据传输性能损耗,同时在计算卡中进行数据的解压缩计算。同理在最后的结果输出阶段,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值