news 2026/7/1 17:46:28

10分钟快速上手Gluten:ARM平台上Spark SQL性能优化实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10分钟快速上手Gluten:ARM平台上Spark SQL性能优化实战指南

10分钟快速上手Gluten:ARM平台上Spark SQL性能优化实战指南

【免费下载链接】GlutenThis repository is a mirror repository for the integration between the OmniRuntime system and Gluten.项目地址: https://gitcode.com/openeuler/Gluten

前往项目官网免费下载:https://ar.openeuler.org/ar/

Gluten是openEuler社区推出的Spark SQL性能加速引擎,通过Columnar执行模式显著提升ARM平台上的数据分析效率。本指南将帮助你在10分钟内完成从环境配置到性能测试的全流程,让你的Spark作业在ARM架构下焕发新生🚀

📋 环境准备:ARM平台兼容性检查

Gluten在ARM平台(aarch64架构)上已实现完整支持,需确保系统满足以下要求:

  • 操作系统:Ubuntu 20.04/22.04 或 CentOS 7/8
  • Java环境:OpenJDK 8(推荐)或 JDK 17
  • Spark版本:3.2.2/3.3.1/3.4.3/3.5.2(官方验证版本)
  • 基础依赖:Maven 3.6+、Git、CMake 3.16+

Gluten Columnar执行流程示意图,展示从Spark SQL到Native执行的加速路径

⚙️ 一键部署:ARM平台专属安装脚本

1. 代码获取与环境变量配置

# 克隆官方仓库 git clone https://gitcode.com/openeuler/Gluten cd Gluten # 配置ARM专用JDK环境 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64 export PATH=$JAVA_HOME/bin:$PATH

2. 编译优化:针对ARM架构的构建命令

Gluten提供专为ARM平台优化的编译脚本,通过CPU_TARGET参数自动适配aarch64架构:

# 设置ARM架构编译目标 export CPU_TARGET="aarch64" # 执行一键构建(包含Velox后端) ./dev/buildbundle-veloxbe.sh

⏱️编译提示:首次构建会下载依赖,建议配置Maven镜像加速。可通过export NUM_THREADS=4限制并行编译线程数,避免ARM平台内存溢出。

编译产物位于package/target/目录,生成如gluten-velox-bundle-spark3.3_2.12-1.0.0-SNAPSHOT.jar的完整包。

🔧 核心配置:解锁ARM平台性能潜力

Spark配置优化

spark-defaults.conf中添加以下配置,启用Gluten加速并优化ARM资源利用:

# 启用Gluten插件 spark.plugins=org.apache.gluten.GlutenPlugin # 使用Columnar Shuffle管理器 spark.shuffle.manager=org.apache.spark.shuffle.sort.ColumnarShuffleManager # 配置OffHeap内存(建议为物理内存的50%) spark.memory.offHeap.enabled=true spark.memory.offHeap.size=20g # ARM平台内存优化 spark.gluten.sql.columnar.backend.velox.spillStrategy=auto spark.gluten.sql.columnar.forceShuffledHashJoin=true

验证安装

通过spark-shell验证Gluten是否正确加载:

spark-shell --jars package/target/gluten-velox-bundle-spark3.3_2.12-1.0.0-SNAPSHOT.jar

在Spark Shell中执行spark.sparkContext.getConf.get("spark.plugins"),应返回org.apache.gluten.GlutenPlugin

🚀 性能测试:ARM平台TPC-H基准验证

数据准备

使用Gluten提供的TPC-H数据生成工具(位于tools/workload/tpch/):

# 生成SF100规模的Parquet格式数据 ./tools/workload/tpch/gen_data/parquet_dataset/tpch_datagen_parquet.sh 100 /path/to/tpch-data

执行查询

提交TPC-H Q6查询测试性能:

spark-submit \ --class org.apache.spark.sql.GlutenTPC \ --master yarn \ --conf spark.driver.extraClassPath=package/target/gluten-velox-bundle-spark3.3_2.12-1.0.0-SNAPSHOT.jar \ --conf spark.executor.extraClassPath=package/target/gluten-velox-bundle-spark3.3_2.12-1.0.0-SNAPSHOT.jar \ package/target/gluten-velox-bundle-spark3.3_2.12-1.0.0-SNAPSHOT.jar \ --data-path /path/to/tpch-data \ --query 6

Gluten与原生Spark在ARM平台上的TPC-H 10查询性能对比,平均加速2.3倍

📊 监控与调优:Gluten UI与性能诊断

Gluten提供专属监控界面,可直观查看执行计划和性能指标:

# 启用Gluten UI spark.gluten.ui.enabled=true

访问Spark UI的Gluten SQL / DataFrame标签页,可查看:

  • 各算子的Native执行状态
  • 内存使用和溢出统计
  • 执行计划 fallback 详情

Gluten UI展示的查询执行详情,包含Native计划和性能指标

💡 进阶技巧:ARM平台深度优化

1. 内存管理优化

针对ARM平台内存带宽特性,调整Velox内存分配策略:

# 启用HBM(高带宽内存)支持(如硬件支持) spark.gluten.sql.columnar.backend.velox.hbmEnabled=true # 设置内存溢出阈值 spark.gluten.sql.columnar.backend.velox.maxSpillLevel=4

2. 并发控制调整

根据ARM核心数优化并行度:

# 设置Executor核心数(建议为ARM物理核心数的1-1.5倍) --executor-cores 8 # 调整Shuffle并行度 spark.sql.shuffle.partitions=200

❓ 常见问题解决

Q:编译时提示"aarch64架构不支持"?

A:确保使用最新代码,执行git pull同步主分支,ARM支持已合并到主线。

Q:查询出现Fallback警告?

A:检查spark.gluten.sql.columnar.fallback.allow配置,通过Gluten UI查看具体不支持的算子,参考支持状态文档。

Q:ARM平台内存占用过高?

A:启用内存溢出功能spark.gluten.sql.columnar.backend.velox.spillStrategy=auto,并调整spark.memory.offHeap.size至物理内存的40%。

📚 资源与文档

  • 官方文档:docs/get-started/Velox.md
  • 性能调优指南:docs/developers/ProfileMemoryOfGlutenWithVelox.md
  • 代码仓库:通过git clone https://gitcode.com/openeuler/Gluten获取最新代码

通过本指南,你已掌握在ARM平台部署和优化Gluten的核心技能。立即体验Columnar执行带来的性能飞跃,让Spark SQL在ARM架构下发挥最大潜力!✨

【免费下载链接】GlutenThis repository is a mirror repository for the integration between the OmniRuntime system and Gluten.项目地址: https://gitcode.com/openeuler/Gluten

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 17:46:26

KMPlayer 深度配置手册:硬件加速、画质调优与格式兼容全解析

KMPlayer 可能是市面上对新手上手最友好的全能播放器之一——装完就能播,不用折腾解码器。但如果你愿意花 10 分钟调一下设置,播放体验还能再上一个台阶。 本文基于 KMPlayer 2025/2026 最新版,整理了硬件加速、渲染器、画质滤镜、音频输出和…

作者头像 李华
网站建设 2026/6/27 21:13:23

开发者必看:openYuanrong serve贡献指南与代码提交规范

开发者必看:openYuanrong serve贡献指南与代码提交规范 【免费下载链接】yuanrong-serve openYuanrong serve:提供推理容量感知调度和推理实力快速弹性能力 项目地址: https://gitcode.com/openeuler/yuanrong-serve 前往项目官网免费下载&#x…

作者头像 李华
网站建设 2026/6/27 21:12:06

IB-Robot配置系统揭秘:robot_config SSOT规格驱动开发实践

IB-Robot配置系统揭秘:robot_config SSOT规格驱动开发实践 【免费下载链接】IB_Robot Save the code of IB-Robot, an AI robot execution framework developed by openEuler Embedded for embodied intelligence scenarios. It includes references to the forked …

作者头像 李华
网站建设 2026/6/27 21:09:44

第一章Netty,bytebuffer黏包半包(核心点理解)

基于前文对 ByteBuffer 核心机制(position/limit)、状态控制(flip/compact)及网络协议处理(Scattering/Gathering)的讨论,‌粘包‌和‌半包‌是 TCP 流式协议在应用层必须解决的核心问题。ByteBuffer 通过其指针管理和内存操作特性,提供了高效的解决方案。 一、现象定…

作者头像 李华
网站建设 2026/6/29 10:34:40

Ray Adapter调度策略详解:PlacementGroup与NodeAffinity实战

Ray Adapter调度策略详解:PlacementGroup与NodeAffinity实战 【免费下载链接】ray-adapter Compatible with the core interfaces of the open-source software Ray, it facilitates the seamless migration of workloads running on Ray (such as vllm/verl, etc.)…

作者头像 李华
网站建设 2026/6/27 21:05:18

OmniStream状态管理革命:OmniStateStore如何降低RocksDB访问频次

OmniStream状态管理革命:OmniStateStore如何降低RocksDB访问频次 【免费下载链接】OmniStream OmniStream operator acceleration is implemented using native code (C/C) to optimize Flink SQL and DataStream operators. 项目地址: https://gitcode.com/opene…

作者头像 李华