Apache Gluten编译指南在Linux系统下构建高性能原生引擎的详细步骤【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/glutenApache Gluten是一个中间层组件负责将基于JVM的SQL引擎执行任务卸载到原生引擎从而显著提升查询性能。本指南将详细介绍如何在Linux系统下编译Gluten项目包括环境准备、依赖安装和分步构建流程帮助新手快速掌握高性能原生引擎的构建方法。准备工作系统环境与依赖检查 在开始编译前请确保您的Linux系统满足以下要求操作系统Ubuntu 20.04或CentOS 7/8/9推荐Ubuntu 20.04获得最佳兼容性基础工具Git、CMake 3.20、Ninja-build 1.8.2、Maven 3.6.3、Java 8编译工具链Clang 19.0ClickHouse后端或GCC 11Velox后端一键安装依赖Gluten提供了便捷的依赖安装脚本执行以下命令即可完成基础依赖配置# 克隆代码仓库 git clone https://gitcode.com/GitHub_Trending/glu/gluten cd gluten # 安装系统依赖以Ubuntu为例 sudo ./ep/build-clickhouse/src/install-ubuntu.sh编译核心步骤从源码到可执行文件 步骤1选择后端引擎Gluten支持多种原生引擎后端目前主要分为两大分支ClickHouse后端基于列存数据库ClickHouse的高性能分析引擎Velox后端Meta开源的统一执行引擎支持GPU加速本文将以ClickHouse后端为例进行演示Velox后端的编译流程会在后续章节简要说明。步骤2编译ClickHouse后端2.1 准备源码# 克隆Gluten仓库若未克隆 git clone https://gitcode.com/GitHub_Trending/glu/gluten cd gluten # 克隆ClickHouse源码需特定分支 git clone --recursive --shallow-submodules -b clickhouse_backend https://github.com/Kyligence/ClickHouse.git cd ClickHouse latest_branch$(cat ../cpp-ch/clickhouse.version | grep CH_BRANCH | cut -d -f2) git checkout -b $latest_branch origin/$latest_branch git submodule sync --recursive git submodule update --init --recursive2.2 配置CMake参数使用CLion进行配置时需设置以下关键参数也可通过命令行完成关键配置项CMAKE_BUILD_TYPE选择Release或Debug生产环境推荐ReleaseDCH_SOURCE_DIR指定ClickHouse源码路径ENABLE_EXTERN_LOCAL_ENGINE必须设为ON以启用Gluten集成命令行配置示例mkdir -p build cd build cmake -G Ninja \ -DCMAKE_BUILD_TYPERelease \ -DENABLE_PROTOBUFON \ -DENABLE_TESTSOFF \ -DENABLE_JEMALLOCON \ -DENABLE_EXTERN_LOCAL_ENGINEON \ ..2.3 执行编译# 使用Ninja加速编译-j指定线程数建议设为CPU核心数-2 ninja -j $(nproc --ignore2) # 编译产物位置 ls -al utils/extern-local-engine/libch.so编译成功后会在utils/extern-local-engine/目录下生成libch.soRelease版或libchd.soDebug版。步骤3编译Gluten Java组件完成原生引擎编译后需构建Gluten的Java部分cd gluten # 返回项目根目录 # 设置Maven内存参数避免OOM export MAVEN_OPTS-Xmx8g -XX:ReservedCodeCacheSize2g # 编译Spark 3.3版本支持3.3/3.4/3.5/4.0/4.1 mvn clean install -Pbackends-clickhouse -Phadoop-2.7.4 -Pspark-3.3 \ -Dhadoop.version2.8.5 -DskipTests -Dcheckstyle.skip # 查看编译产物 ls -al backends-clickhouse/target/gluten-*-spark-3.3-jar-with-dependencies.jarVelox后端编译指南 若需使用Velox后端可通过以下脚本一键构建# 基础构建默认Release模式 ./dev/builddeps-veloxbe.sh # 启用GPU支持需CUDA环境 ./dev/builddeps-veloxbe.sh --enable_gpuON # 启用S3存储支持 ./dev/builddeps-veloxbe.sh --enable_s3ON编译完成后Velox相关库会位于ep/build-velox/build/velox_ep/目录。常见问题解决 编译失败依赖缺失症状CMake配置时提示找不到Protobuf或Jemalloc解决# 手动安装缺失依赖 sudo apt-get install libprotobuf-dev libjemalloc-dev # 或使用Velox自带依赖安装脚本 cd ep/build-velox/src/velox_ep ./scripts/setup-ubuntu.sh编译速度慢优化编译参数解决方案使用Ninja而非Makecmake -G Ninja增加并行编译线程ninja -j 16根据CPU核心数调整启用ccache缓存编译结果export CMAKE_CXX_COMPILER_LAUNCHERccacheIDE调试配置使用CLion调试时需配置Java可执行路径和环境变量关键配置Executable指向Java可执行文件路径Environment variables设置LD_PRELOAD指向libch.soWorking directory设置为Gluten项目根目录验证编译结果 ✅编译完成后可通过以下步骤验证检查库文件# ClickHouse后端库 file cpp-ch/build/utils/extern-local-engine/libch.so # Gluten Java包 jar tf backends-clickhouse/target/gluten-*-jar-with-dependencies.jar | grep GlutenPlugin运行单元测试mvn test -Pbackends-clickhouse -Pspark-3.3查看编译日志 编译过程日志位于cpp/build/CMakeFiles/CMakeOutput.log若出现错误可在此文件中查找详细信息。总结通过本文档您已掌握在Linux系统下编译Apache Gluten的完整流程。无论是选择ClickHouse后端还是Velox后端关键在于正确配置依赖和编译参数。编译完成后您可以将Gluten集成到Spark环境中体验原生执行引擎带来的性能提升。官方文档docs/get-started/ClickHouse.md编译脚本dev/builddeps-veloxbe.sh希望本指南能帮助您顺利构建Gluten项目如有任何问题欢迎查阅项目文档或提交Issue。【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/gluten创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考