Deep dive: How Lightning Engine delivers 4.9x faster Apache Spark performance

TL;DR · AI 摘要
Lightning Engine 提升 Apache Spark 性能达 4.9 倍,通过原生执行和优化连接器实现。
核心要点
- Lightning Engine 提供高达 4.9 倍于标准 Spark 的性能提升。
- 原生 C++ 执行层通过 SIMD 向量化加速排序和窗口函数。
- 与 BigQuery 和云存储的优化连接器减少数据传输开销。
结构提纲
按章节快速跳转。
- §引言
Apache Spark 在数据处理中面临性能瓶颈,Lightning Engine 提供性能提升方案。
Lightning Engine 实现高达 4.9 倍于标准 Spark 的性能提升。
通过将 Spark 查询计划编译为原生 C++ 指令,减少 JVM 开销。
向量化排序通过列式内存处理减少 CPU 周期开销。
窗口函数在原生 C++ 层执行,提升计算效率。
不支持的查询操作自动回退到 JVM,保持执行稳定性。
优化的云存储和 BigQuery 连接器减少数据传输开销。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Lightning Engine 性能优化
- 性能提升
- 4.9 倍于标准 Spark
- 2 倍于其他高速 Spark 替代方案
- 原生执行机制
- SIMD 向量化
- 向量化排序
- 窗口函数加速
- 智能回退机制
- 优化连接器
- 云存储优化
- BigQuery 优化
金句 / Highlights
值得收藏与分享的关键句。
Lightning Engine 实现高达 4.9 倍于标准 Spark 的性能提升。
原生 C++ 执行层通过 SIMD 向量化加速排序和窗口函数。
优化的云存储和 BigQuery 连接器减少数据传输开销。
Apache Spark 性能深度解析:Lightning Engine 的照明引擎 | Google Cloud 博客
数据分析
深度解析:Lightning Engine 如何实现 Apache Spark 性能提升 4.9 倍
2026 年 6 月 11 日
##### Newton Alex
工程总监
##### Abhishek Modi
Google Cloud 首席软件工程师
##### 今天试用 Gemini Enterprise Business Edition
职场人工智能的入口
立即试用
从基础的 ETL 和分析到生成式人工智能的前沿,Apache Spark 作为全球数据处理的架构支柱。然而,随着数据量的增加,性能和基础设施成本之间的权衡可能成为增长的限制因素。在自主代理时代,自主代理可以触发数千个并发、多跳查询,这种性能瓶颈直接决定了你的单位经济性。
我们很高兴宣布 Lightning Engine for Managed Service for Apache Spark 的正式发布,可在我们的无服务器和托管集群部署模式中使用。它专为解决这些扩展挑战而设计,与现代 Spark 工作负载完全兼容,并且不需要对现有数据管道进行任何更改。
无论您选择我们无服务器部署模式的零操作简便性,还是我们托管集群部署模式的精细基础设施控制,Lightning Engine 都是统一的性能引擎,可加速您的作业执行。通过在超过一百万个真实工作负载上验证 Lightning Engine,我们已将其优化为工业级的稳定性以及可靠的性能提升。
随着此次正式发布,Lightning Engine 提供以下优势:
- 相比标准开源 Spark,性能提升高达 4.9 倍
- 相比领先的高速 Spark 替代方案,价格性能提升 2 倍
让我们更仔细地看看 Manager Service for Apache Spark 如何实现这些出色的结果。
内部机制:向量化原生执行
传统的 Spark 执行通常受到 JVM 执行开销和垃圾收集暂停的限制。Lightning Engine 通过将 Spark 物理查询计划编译为针对单指令多数据(SIMD)向量化优化的原生 C++ 指令,绕过了这些限制。
基于开源的 Gluten 和 Velox 运行时,并结合了 Google 特有的增强功能,这种原生执行层通过以下方式加速您的最苛刻的数据处理任务:
- 向量化排序:通过在原生内存中按列处理数据,显著减少 CPU 周期开销,加速排序操作。
- 加速窗口函数:通过在原生 C++ 层直接执行,加快在行集上进行的计算(如移动平均值、聚合和去重)。
- 智能回退:如果查询包含不被原生支持的操作符或自定义 Java UDF,引擎的智能下推层会自动且优雅地将该特定子树回退到 JVM,避免不必要的数据格式转换,并保持整体执行稳定性。
优化的云存储和 BigQuery 连接器
如果引擎缺乏数据,高性能计算就毫无意义。借助 Lightning Engine,我们优化了存储连接器,确保从 Cloud Storage 和 BigQuery 读取数据不会成为瓶颈。优化包括:
- 直接路径连接:绕过多个节点跳转,使用与云存储的双向流式传输。这使得查找操作和向量化 readV API 能够在不重新打开流的情况下运行,从而加快对复杂、深度嵌套的 Parquet 或 ORC 文件的扫描速度。
- 元数据调用减少:管理大规模分区表时,常常伴随着一个隐藏的性能成本:仅仅列出文件所耗费的时间。Lightning Engine 在驱动程序中使用字典顺序列出文件来收集元数据,并直接将其传输给执行器,消除了冗余的云存储 API 调用,显著降低了云存储的元数据成本。
- 原生 BigQuery 连接器:直接以 Arrow 格式消费 BigQuery 数据。通过避免从 Arrow 到 JVM UnsafeRow 的昂贵转换,引擎消除了序列化开销,从而加快扫描速度。
广播连接和高级查询优化
Lightning Engine 集成了一个先进的基于成本的查询优化器,灵感来源于 Google 的 F1 和 Spanner 查询引擎,并引入了若干自定义的优化规则。例如包括:
- 单个 HashTable 缓存:在标准的广播连接中,Spark 在各个任务中重复构建连接哈希表。Lightning Engine 在每个执行器上仅构建一次哈希表并进行缓存,消除了冗余的 CPU 周期,减少了执行器的内存占用。
- 聚合下推:自动将部分聚合操作下推到连接 shuffle 之下。这减少了必须在网络上传输的数据量,显著降低了昂贵的 shuffle 阶段。
- 自动 shuffle 分区:根据运行时统计信息,动态且自适应地确定每个查询阶段的最佳 shuffle 分区数量,防止内存溢出(OOM)溢出,同时避免过度分区。
了解更多技术细节以及 Lowe’s 使用 Lightning Engine 的经验,请参阅 Google Cloud Next ‘26。
入门指南
这些更新现已上线并可供使用!您可以通过 Google Cloud 控制台或通过 gcloud CLI 直接启用 Lightning Engine。
要使用启用 Lightning Engine 的无服务器批处理作业,请在 Spark 属性中指定高级别:
加载中...
gcloud dataproc batches submit pyspark my_script.py \ --region=us-central1 \ --properties=dataproc:dataproc.tier=premium \ --properties=spark:spark.dataproc.lightningEngine.runtime=native
要在终端中启动一个新的启用 Lightning Engine 和原生查询执行(NQE)的托管集群,请运行以下命令:
gcloud dataproc clusters create my-optimized-cluster \ --region=us-central1 \ --image-version=2.3 \ --engine=lightning \ --enable-component-gateway \ --properties=spark:spark.dataproc.lightningEngine.runtime=native
或者,导航到 Google Cloud 控制台中的 Apache Spark 管理服务页面,点击“创建集群”,选择“Compute Engine 上的集群”,并在集群配置设置下选择 Lightning Engine,以自动为您的工作负载启用查询加速。
发布于
- 数据分析
- 流式处理