1.背景介绍
Apache Spark(以下简称Spark)是一个开源的分布式计算框架,由UC Berkeley AMP Lab开发,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。Spark 使用内存加载保存数据并进行迭代计算,减少磁盘溢写,同时支持 Java、Scala、Python 和 R 等多种高级编程语言,这使得Spark可以应对各种复杂的大数据应用场景,例如金融、电商、社交媒体等。
Spark 经过多年发展,作为基础的计算框架,不管是在稳定性还是可扩展性方面,以及生态建设都得到了业界广泛认可。尽管Apache社区对Spark逐步引入了诸如钨丝计划、向量化 Parquet Reader 等一系列优化,整体的计算性能也有两倍左右的提升,但在 3.0 版本以后,整体计算性能的提升有所减缓,并且随着存储、网络以及IO技术的提升,CPU也逐渐成为Spark计算性能的瓶颈。如何在Spark现有框架上,增强大数据计算能力,提高CPU利用率,成为近年来业界的研究方向。
2.开源优化方案
Spark本身使用scala语言编写,整体架构基于 JVM 开发,只能利用到一些比较基础的 CPU 指令集。虽然有JIT的加持,但相比目前市面上的Native向量化计算引擎而言,性能还是有较大差距。因此考虑如何将具有高性能计算能力的Native向量引擎引用到 Spark 里来,提升 Spark 的计算性能,突破 CPU 瓶颈,成为一种可行性较高的解决方案。
随着Meta在2022年超大型数据库国际会议(VLDB)上发表论文《Velox:Meta's Unified Execution Engine》,并且Intel创建的Gluten项目基于Apache Arrow数据格式和Substrait查询计划的JNI API将Spark JVM和执行引擎解耦,从而将Velox集成到Spark中,这使得使用Spark框架+Native向量引擎的大数据加速方案成为现实。
3.DPU计算卡与软件开发平台
AI大模型的发展,金融、电商等领域数据处理需求的增加,生活应用虚拟化程度的加深,都对现代化数据中心提出严峻的考验。未来数据中心的发展趋势,逐步演变成CPU + DPU + GPU三足鼎立的情况,CPU用于通用计算,GPU用于加速计算,DPU则进行数据处理。将大数据计算卸载到具有高度定制化和数据处理优化架构的大规模数据计算DPU卡上,可以有效提高计算密集型应用场景下数据中心的性能和效率,降低其成本和能耗。</