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),仅供参考