Apache Gluten跨平台编译:在Windows系统下构建原生引擎的技巧
【免费下载链接】glutenGluten is a middle layer responsible for offloading JVM-based SQL engines' execution to native engines.项目地址: https://gitcode.com/GitHub_Trending/glu/gluten
Apache Gluten是一个中间层,负责将基于JVM的SQL引擎执行卸载到原生引擎,显著提升大数据处理性能。本文将详细介绍如何在Windows系统下通过WSL2环境实现Gluten原生引擎的高效编译,帮助开发者快速搭建开发环境。
📋 准备工作:Windows环境配置
安装WSL2子系统
Windows Subsystem for Linux 2(WSL2)是在Windows上运行Linux环境的最佳选择。通过以下步骤安装:
- 打开PowerShell(管理员模式)执行:
wsl --install -d Ubuntu - 安装完成后重启系统,设置Linux用户名和密码
- 升级WSL2内核:
wsl --update
安装必要依赖
在WSL2的Ubuntu环境中安装编译工具链:
sudo apt update && sudo apt install -y build-essential cmake ninja-build clang-19 git maven openjdk-17-jdk🔧 编译环境配置
配置CLion工具链
推荐使用CLion作为C++开发环境,它对CMake项目有良好支持:
图1:CLion中配置默认工具链,选择Clang 19编译器和Ninja构建工具
CMake配置参数
Gluten使用CMake管理构建过程,Windows环境下需特别配置以下参数:
图2:在CLion的CMake配置中设置Release构建类型及关键编译选项
关键配置选项说明:
-DALLOC_ON=ON:启用内存分配优化-DENABLE_MULTITARGET_CODE=ON:支持多目标代码生成-DENABLE_EXTERN_LOCAL_ENGINE=ON:启用外部本地引擎
ClickHouse后端特殊配置
若需要编译ClickHouse后端,需额外指定ClickHouse源码路径:
图3:设置-DCH_SOURCE_DIR参数指向ClickHouse源码目录
🚀 编译步骤
克隆Gluten仓库
git clone https://gitcode.com/GitHub_Trending/glu/gluten cd gluten使用VCPKG管理依赖
Gluten通过VCPKG管理C++依赖,Windows环境下已针对编译速度优化:
cd dev/vcpkg ./init.shVCPKG配置文件dev/vcpkg/ports/gettext/portfile.cmake中特别针对Windows做了以下优化:
- 仅使用Release构建类型
- 禁用命名空间以加快编译
- 使用配置缓存减少重复检查
执行编译命令
# 回到项目根目录 cd ../../ # 构建Velox后端 ./dev/builddeps-veloxbe.sh # 构建ClickHouse后端 ./dev/buildbundle-veloxbe.sh🐛 常见问题解决
WSL2文件系统性能问题
WSL2访问Windows文件系统(/mnt/c/)速度较慢,建议将代码克隆到Linux文件系统中:
# 推荐位置 cd ~/projects git clone https://gitcode.com/GitHub_Trending/glu/gluten编译内存不足
Windows环境下WSL2默认内存限制可能导致编译失败,可通过修改%USERPROFILE%\.wslconfig文件调整:
[wsl2] memory=8GB processors=4依赖版本冲突
VCPKG会自动管理依赖版本,若出现冲突可清理缓存后重试:
cd dev/vcpkg ./vcpkg remove --outdated ./vcpkg install📚 参考资源
- 官方编译文档:docs/developers/NewToGluten.md
- VCPKG配置说明:dev/vcpkg/README.md
- CLion调试指南:docs/developers/clickhouse-backend-debug.md
通过以上步骤,您可以在Windows系统下高效构建Apache Gluten原生引擎,享受跨平台开发的便利。如有其他问题,欢迎参与项目讨论或查阅官方文档获取更多帮助。
【免费下载链接】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),仅供参考