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.skiptrue -Dscalastyle.skiptrue -Dcheckstyle.skiptrue重要提示: Gluten-Omni编译和运行均依赖OmniOperator。如果尚未编译部署OmniOperator请先参考OmniOperator官方文档进行编译部署。 环境部署与配置OmniOperator环境准备假定OMNI_HOME为/opt/omni-operator参考OmniOperator部署文档下载并部署依赖包将编译产物拷贝到${OMNI_HOME}/lib目录将/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/ 快速启动与验证测试验证步骤准备测试数据: 使用hive-testbench导入2GB TPCDS数据集配置Spark参数: 添加omni相关参数并执行SQL查询验证执行计划: 检查执行计划中的算子是否包含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.enabledtrue \ --conf spark.memory.offHeap.size100g \ --conf spark.sql.orc.implnative \ --conf spark.network.timeout600 \ --conf spark.sql.broadcastTimeout600 \ --conf spark.serializerorg.apache.spark.serializer.KryoSerializer \ --conf spark.shuffle.managerorg.apache.spark.shuffle.sort.ColumnarShuffleManager \ --conf spark.gluten.sql.columnar.backend.libomni \ --conf spark.pluginsorg.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_CONFnarenas: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.partitions1000 \ --conf spark.sql.adaptive.coalescePartitions.minPartitionNum400 \ --conf spark.sql.adaptive.coalescePartitions.initialPartitionNum400 \ --conf spark.kryoserializer.buffer.max1024m \ --conf spark.gluten.sql.columnar.backend.omni.combineJoinedAggregatestrue \ --conf spark.gluten.sql.columnar.backend.omni.joinReorderEnhancetrue验证成功标志: 执行计划中显示包含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中可以找到详细的配置选项内存管理优化: 调整jemalloc配置提升内存分配效率并行度调优: 根据集群规模调整executor配置Shuffle优化: 配置ColumnarShuffleManager提升shuffle性能 故障排查指南常见问题及解决方案编译失败 - 缺少依赖# 检查并安装缺失的依赖 yum install -y 缺失的包名运行时找不到库文件# 确认LD_LIBRARY_PATH设置正确 echo $LD_LIBRARY_PATHSpark任务失败检查Spark日志中的详细错误信息确认所有节点上的部署目录一致验证网络连接和权限设置调试技巧使用调试模式编译可以获取更详细的运行时信息bash cpp-omni/build.sh debug 性能基准测试完成部署后建议进行性能基准测试以验证Gluten-Omni的性能提升效果TPC-H基准测试: 使用标准TPC-H查询集进行性能对比TPC-DS基准测试: 测试复杂分析查询的性能内存使用分析: 监控内存使用情况和GC行为 生产环境部署建议集群部署最佳实践统一环境: 确保所有计算节点环境一致版本控制: 使用配置管理工具管理部署版本监控告警: 设置性能监控和异常告警滚动升级: 采用灰度发布策略减少风险性能调优建议根据数据规模调整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),仅供参考

相关新闻

UBS-IO API完全参考:从创建Cache实例到性能优化的10个关键接口

UBS-IO API完全参考:从创建Cache实例到性能优化的10个关键接口

UBS-IO API完全参考:从创建Cache实例到性能优化的10个关键接口 【免费下载链接】ubs-io Ubs-io provides high-level I/O services for application-affinity global data read/write caching systems based on UB superpods. 项目地址: https://gitcode.com/open…

2026/6/27 21:02:03阅读更多 →
计算机毕业设计之jsp基于SSM框架技术的超市货品销售预警平台的设计与实现

计算机毕业设计之jsp基于SSM框架技术的超市货品销售预警平台的设计与实现

本文介绍了一款使用SSM和JSP开发的超市货品销售预警平台,及其设计与实现过程。根据软件工程对软件系统开发定制的规则和标准,详细的介绍了系统的分析与设计过程,并且详细的概括了系统的开发与测试过程。本文的管理系统使用了java进行系统的后…

2026/6/27 21:02:03阅读更多 →
2026年在线考试系统选型:5个被忽视的细节,决定上线成败

2026年在线考试系统选型:5个被忽视的细节,决定上线成败

选型在线考试系统时,大多数采购者会盯着“题库容量”“防作弊功能”“并发数”这些显性指标。但实际落地过程中,真正决定项目成败的往往是那些容易被忽略的细节。结合2026年技术成熟度和真实部署案例,以下5个细节值得在选型阶段重点考察&…

2026/6/27 21:02:03阅读更多 →
长时间运行应用开发的 Harness 设计

长时间运行应用开发的 Harness 设计

长时间运行应用开发的 Harness 设计 作者: Prithvi Rajasekaran(Anthropic Labs) 发布日期: 2026年3月24日 来源: Anthropic Engineering Blog Harness 设计是 Agent 编程前沿性能的关键。本文展示了我们如何在前端设计和长时间自主软件工程中进一步推动 Claude 的能力边界。…

2026/6/28 1:28:09阅读更多 →
当校园霸凌发生在监控盲区:一枚求救器如何重构青少年安全防线的完整证据链

当校园霸凌发生在监控盲区:一枚求救器如何重构青少年安全防线的完整证据链

中学阶段75%的霸凌事件发生在监控盲区,79%未被上报。这四个字的背后,是”发现难、求救难、干预难、取证难”的系统性困境。传统的解决方案——加强监控、心理教育、事后调查——都无法解决一个核心问题:当霸凌发生在厕所、宿舍角落、放学路上…

2026/6/28 1:28:09阅读更多 →
codex秒生成的小游戏--贪吃蛇

codex秒生成的小游戏--贪吃蛇

<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>贪吃蛇</title> <style>*, *::be…

2026/6/28 1:28:09阅读更多 →
时空态势立体感知 零断点接力追踪驱动安防全域智变技术白皮书

时空态势立体感知 零断点接力追踪驱动安防全域智变技术白皮书

时空态势立体感知 零断点接力追踪驱动安防全域智变技术白皮书编制单位&#xff1a;镜像视界浙江科技有限公司核心定位&#xff1a;基于SpaceOS全域空间计算底座、八大自研引擎&#xff0c;以时空态势立体感知、零断点跨镜接力追踪为核心的安防全域智能化升级体系1. 前言时空态势…

2026/6/28 1:28:09阅读更多 →
每天奋战12个小时,赚不到钱,真是天理难容 —— 这一篇文章送给自己

每天奋战12个小时,赚不到钱,真是天理难容 —— 这一篇文章送给自己

这句话&#xff0c;不是抱怨。是我的底气。也是我的宣言。我不相信努力一定成功。但我更不相信&#xff0c;真正的拼命&#xff0c;会一直没有结果。每天12个小时。不是坐在电脑前12个小时。不是加班12个小时。不是假装忙碌12个小时。而是12个小时都在创造价值。都在成长。都在…

2026/6/28 1:28:09阅读更多 →
【频谱分配】基于遗传算法和粒子群算法认知无线电频谱分配研究附Matlab代码

【频谱分配】基于遗传算法和粒子群算法认知无线电频谱分配研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现私信&#x1f34a;个人信条&#xff1a;做科研&#xff0c;博学之、审问之、慎思之、明辨之、…

2026/6/28 1:23:09阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/6/28 0:08:01阅读更多 →