在 Docker 中构建 Gluten Velox 后端
目前,我们有两种构建 Gluten 的方式:静态链接和动态链接。
静态链接
静态链接方式会通过 vcpkg 构建 Velox 和 Gluten 所需的全部依赖库,然后将这些库静态链接到 libvelox.so 和 libgluten.so 中,从而能够在 x86 平台、拥有 64G 内存的任何 Linux 操作系统上构建 Gluten。不过我们仅在 Centos-7/8/9 和 Ubuntu 20.04/22.04 上验证过。如果你的操作系统上构建失败,请提交 issue。
目标系统所需的依赖库如下,这些是每个 Linux 操作系统都预装的基础库。
linux-vdso.so.1
librt.so.1
libpthread.so.0
libdl.so.2
libm.so.6
libc.so.6
/lib64/ld-linux-x86-64.so.2用于构建 Gluten jar 的 dockerfile:
FROM apache/gluten:vcpkg-centos-7
# Build Gluten Jar
RUN source /opt/rh/devtoolset-11/enable && \
git clone https://github.com/apache/gluten.git && \
cd gluten && \
./dev/builddeps-veloxbe.sh --run_setup_script=OFF --enable_s3=ON --enable_gcs=ON --enable_abfs=ON --enable_vcpkg=ON --build_arrow=OFF && \
mvn clean package -Pbackends-velox -Pceleborn -Piceberg -Pdelta -Pspark-3.4 -DskipTestsenable_vcpkg=ON 启用静态链接。Vcpkg 软件包已预先安装在 vcpkg-centos-7 镜像中,并可被自动复用。该镜像由 Gluten 社区维护。
该命令会在 glutenimage 中构建 Gluten jar:
docker build -t glutenimage -f dockerfilegluten jar 可以从 glutenimage:/gluten/package/target/gluten-velox-bundle-*.jar 复制得到。
动态链接
动态链接方式需要先安装依赖库,然后将 .so 文件动态链接到 libvelox.so 和 libgluten.so 中。目前,Centos-7/8/9 以及 Ubuntu 20.04/22.04 支持以动态链接方式构建 Gluten Velox 后端。
用于构建 Gluten jar 的 'dockerfile':
FROM apache/gluten:centos-8-jdk8
# Build Gluten Jar
RUN source /opt/rh/devtoolset-11/enable && \
git clone https://github.com/apache/gluten.git && \
cd gluten && \
./dev/builddeps-veloxbe.sh --run_setup_script=ON --enable_hdfs=ON --enable_vcpkg=OFF --build_arrow=OFF && \
mvn clean package -Pbackends-velox -Pceleborn -Piceberg -Pdelta -Pspark-3.4 -DskipTests && \
./dev/build-thirdparty.shenable_vcpkg=OFF 启用动态链接。部分共享库已预先安装在镜像中,你需要指定 --run_setup_script=ON 来安装其余的共享库。随后它会通过 build-thirdparty.sh 将所有依赖库打包进一个 jar 中。请注意,该镜像是基于 centos-8 构建的,在其他操作系统上构建和部署该 jar 存在风险。
以下命令会在 ‘glutenimage’ 中构建 Gluten jar:
docker build -t glutenimage -f dockerfileGluten jar 可以从 glutenimage:/gluten/package/target/gluten-velox-bundle-.jar 和 glutenimage:/gluten/package/target/gluten-thirdparty-lib-.jar 复制出来。
评论
登录后参与评论
KnowForge