news 2026/7/2 3:13:54

Gluten-Omni编译部署完全指南:从源码到生产环境的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gluten-Omni编译部署完全指南:从源码到生产环境的完整流程

Gluten-Omni编译部署完全指南:从源码到生产环境的完整流程

【免费下载链接】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/

🚀 想要在ARM平台上获得卓越的Spark数据处理性能吗?Gluten-Omni正是您需要的解决方案!作为openEuler社区的重要项目,Gluten-Omni将Spark计算框架与鲲鹏自研的OmniRuntime向量化执行引擎完美结合,为大数据处理带来了革命性的性能提升。本终极指南将带您从零开始,完成Gluten-Omni的完整编译部署流程。

📋 前置环境准备

在开始编译之前,您需要确保系统满足以下基础环境要求:

系统要求

  • 操作系统: openEuler 22.03 LTS SP1 或更高版本
  • 处理器架构: ARM64(鲲鹏平台)
  • 内存: 至少8GB RAM(推荐16GB+)
  • 磁盘空间: 至少20GB可用空间

依赖软件安装

# 安装基础编译工具 yum install -y git cmake make gcc gcc-c++ java-11-openjdk maven # 安装必要的开发库 yum install -y openssl-devel libcurl-devel zlib-devel

克隆项目代码

git clone https://gitcode.com/openeuler/Gluten cd Gluten

🔧 完整编译流程详解

Gluten-Omni的编译分为两个主要部分:C++核心库编译和Java/Scala打包编译。

第一步:编译C++核心库

C++部分是Gluten-Omni的性能核心,编译命令位于cpp-omni/build.sh:

# 进入项目根目录 cd Gluten # 编译cpp代码,生成libspark_columnar_plugin.so bash cpp-omni/build.sh

编译选项说明:

  • debug模式:bash cpp-omni/build.sh debug- 启用调试信息
  • release模式:bash cpp-omni/build.sh release- 生产环境优化(默认)
  • 测试模式:bash cpp-omni/build.sh test- 包含测试用例
  • 覆盖率分析:bash cpp-omni/build.sh coverage- 生成代码覆盖率报告

第二步:编译Java/Scala打包

Java/Scala部分负责与Spark框架的集成:

# 编译Java/Scala代码,生成gluten-omni-bundle-spark3.3_2.12-openEuler_22.03_aarch_64-1.3.0.jar mvn clean package -Pbackends-omni -Pspark-3.3 -DskipTests -Dspotless.check.skip=true -Dscalastyle.skip=true -Dcheckstyle.skip=true

重要提示: Gluten-Omni编译和运行均依赖OmniOperator。如果尚未编译部署OmniOperator,请先参考OmniOperator官方文档进行编译部署。

📦 环境部署与配置

OmniOperator环境准备

假定OMNI_HOME为/opt/omni-operator

  1. 参考OmniOperator部署文档下载并部署依赖包
  2. 将编译产物拷贝到${OMNI_HOME}/lib目录
  3. /opt/omni-operator目录拷贝到任务提交节点和所有计算节点

部署编译产物

# 创建部署目录 mkdir -p /opt/gluten-omni/lib # 拷贝编译产物 cp cpp-omni/build/libspark_columnar_plugin.so /opt/gluten-omni/lib/ cp backends-omni/target/gluten-omni-bundle-spark3.3_2.12-openEuler_22.03_aarch_64-1.3.0.jar /opt/gluten-omni/lib/ cp ${OMNI_HOME}/lib/boostkit-omniop-bindings-2.2.0-aarch64.jar /opt/gluten-omni/lib/

🚀 快速启动与验证

测试验证步骤

  1. 准备测试数据: 使用hive-testbench导入2GB TPCDS数据集
  2. 配置Spark参数: 添加omni相关参数并执行SQL查询
  3. 验证执行计划: 检查执行计划中的算子是否包含"Omni"

参考启动命令

export OMNI_HOME=/opt/gluten-omni export LD_LIBRARY_PATH=/opt/gluten-omni/lib:/usr/local/lib64 spark-sql --master yarn \ --driver-cores 20 \ --driver-memory 40g \ --num-executors 12 \ --executor-cores 40 \ --executor-memory 20g \ --conf spark.memory.offHeap.enabled=true \ --conf spark.memory.offHeap.size=100g \ --conf spark.sql.orc.impl=native \ --conf spark.network.timeout=600 \ --conf spark.sql.broadcastTimeout=600 \ --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ --conf spark.shuffle.manager=org.apache.spark.shuffle.sort.ColumnarShuffleManager \ --conf spark.gluten.sql.columnar.backend.lib=omni \ --conf spark.plugins=org.apache.gluten.GlutenPlugin \ --conf spark.driver.extraClassPath=/opt/gluten-omni/lib/gluten-omni-bundle-spark3.3_2.12-openEuler_22.03_aarch_64-1.3.0.jar:/opt/gluten-omni/lib/boostkit-omniop-bindings-2.2.0-aarch64.jar \ --conf spark.executor.extraClassPath=/opt/gluten-omni/lib/gluten-omni-bundle-spark3.3_2.12-openEuler_22.03_aarch_64-1.3.0.jar:/opt/gluten-omni/lib/boostkit-omniop-bindings-2.2.0-aarch64.jar \ --conf spark.executorEnv.LD_LIBRARY_PATH=/opt/gluten-omni/lib:/usr/local/lib64 \ --conf spark.executorEnv.OMNI_HOME=/opt/gluten-omni \ --conf spark.driverEnv.LD_LIBRARY_PATH=/opt/gluten-omni/lib:/usr/local/lib64 \ --conf spark.driverEnv.OMNI_HOME=/opt/gluten-omni \ --conf spark.executorEnv.MALLOC_CONF=narenas:2 \ --conf spark.driverEnv.LD_PRELOAD=/usr/local/lib/libjemalloc.so.2 \ --conf spark.executorEnv.LD_PRELOAD=/usr/local/lib/libjemalloc.so.2 \ --conf spark.gluten.sql.columnar.libpath=/opt/gluten-omni/lib/libspark_columnar_plugin.so \ --conf spark.sql.shuffle.partitions=1000 \ --conf spark.sql.adaptive.coalescePartitions.minPartitionNum=400 \ --conf spark.sql.adaptive.coalescePartitions.initialPartitionNum=400 \ --conf spark.kryoserializer.buffer.max=1024m \ --conf spark.gluten.sql.columnar.backend.omni.combineJoinedAggregates=true \ --conf spark.gluten.sql.columnar.backend.omni.joinReorderEnhance=true

验证成功标志: 执行计划中显示包含"Omni"算子,表示Gluten-Omni已成功启用!

⚙️ 高级配置选项

编译参数定制

您可以根据需求调整编译参数:

# 开启调试信息编译 bash cpp-omni/build.sh debug # 编译包含测试用例 bash cpp-omni/build.sh test # 为不同Spark版本编译 mvn clean package -Pbackends-omni -Pspark-3.4 -DskipTests

性能优化配置

在Configuration.md中可以找到详细的配置选项:

  1. 内存管理优化: 调整jemalloc配置提升内存分配效率
  2. 并行度调优: 根据集群规模调整executor配置
  3. Shuffle优化: 配置ColumnarShuffleManager提升shuffle性能

🔍 故障排查指南

常见问题及解决方案

  1. 编译失败 - 缺少依赖

    # 检查并安装缺失的依赖 yum install -y <缺失的包名>
  2. 运行时找不到库文件

    # 确认LD_LIBRARY_PATH设置正确 echo $LD_LIBRARY_PATH
  3. Spark任务失败

    • 检查Spark日志中的详细错误信息
    • 确认所有节点上的部署目录一致
    • 验证网络连接和权限设置

调试技巧

使用调试模式编译可以获取更详细的运行时信息:

bash cpp-omni/build.sh debug

📊 性能基准测试

完成部署后,建议进行性能基准测试以验证Gluten-Omni的性能提升效果:

  1. TPC-H基准测试: 使用标准TPC-H查询集进行性能对比
  2. TPC-DS基准测试: 测试复杂分析查询的性能
  3. 内存使用分析: 监控内存使用情况和GC行为

🔄 生产环境部署建议

集群部署最佳实践

  1. 统一环境: 确保所有计算节点环境一致
  2. 版本控制: 使用配置管理工具管理部署版本
  3. 监控告警: 设置性能监控和异常告警
  4. 滚动升级: 采用灰度发布策略减少风险

性能调优建议

  • 根据数据规模调整executor内存和核心数
  • 合理设置shuffle分区数避免数据倾斜
  • 启用off-heap内存提升大内存操作性能
  • 配置合适的序列化器减少网络传输开销

🎯 总结

通过本完整指南,您已经掌握了Gluten-Omni从源码编译到生产部署的全流程。Gluten-Omni作为openEuler社区的重要大数据加速项目,为ARM平台上的Spark计算带来了显著的性能提升。无论是开发测试还是生产部署,遵循本文的步骤都能确保您顺利使用这一强大的数据计算加速方案。

💡核心优势总结:

  • 🚀 显著提升Spark在ARM平台的性能
  • 🔧 与Spark生态无缝集成
  • 📈 支持向量化执行优化
  • 🛡️ 经过openEuler社区验证的稳定方案

现在就开始您的Gluten-Omni之旅,体验下一代大数据计算加速技术带来的极致性能!

【免费下载链接】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/6/27 21:01:39

openYuanrong frontend源码解析:核心组件的实现原理

openYuanrong frontend源码解析&#xff1a;核心组件的实现原理 【免费下载链接】yuanrong-frontend openYuanrong frontend&#xff1a;openYuanrong 网关&#xff0c;支持函数创建、调用等功能 项目地址: https://gitcode.com/openeuler/yuanrong-frontend 前往项目官…

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

react native 0.72遇到react-native-screens库出现cxx编译问题的解决方案

你好&#xff0c;我是千里马&#xff0c;是一个程序员&#xff0c;软件工程师&#xff0c;我负责owo相簿所有相关产品的开发以及维护工作&#xff0c;最近这两天我遇到了一个棘手的问题&#xff0c;莫名其妙&#xff0c;相簿相关安卓端react native应用没办法完成轻量化编译&am…

作者头像 李华
网站建设 2026/6/27 20:40:38

六层阻抗定制九大典型错误汇总!

长期从事高速 PCB 设计不难发现&#xff0c;很多工程师使用六层板多年&#xff0c;阻抗打样反复不合格、整改低效、改版频繁&#xff0c;梳理全部案例后&#xff0c;问题高度集中在叠层选型错误、微带带状线混用计算、参考平面破损、忽略工艺公差、过孔不合理等九类共性设计失误…

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

从“流量焦虑”到“资产沉淀”:AI赋能下的长效经营

在直播电商狂飙突进的这几年&#xff0c;AI几乎成了每个商家的标配。然而&#xff0c;当新鲜感褪去&#xff0c;许多商家却发现自己陷入了新的泥潭&#xff1a;AI确实让某些环节变快了&#xff0c;但整体运营效率并没有质的飞跃。这背后的深层原因在于&#xff0c;我们一直把AI…

作者头像 李华