Doris 官方提供了容器环境进行编译,省去了手动搭建编译环境的操作,开箱即用,更加便捷。
本文将介绍使用官方提供的编译环境容器(incubator-doris)进行安装包编译。
1 运行编译环境容器 incubator-doris
准备 Linux 系统预装 docker 环境,运行 incubator-doris 容器
docker run -it -d \
-v /opt/.m2:/root/.m2 \
-v /opt/doris-0.15.0/:/root/doris-0.15.0/ \
apache/incubator-doris:build-env-ldb-toolchain-latest
建议以挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。
同时,建议同时将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。
2 进入 incubator-doris
docker exec -it determined-gates bash
3 下载 doris 源码
cd /root/doris-0.15.0
git clone https://github.com/apache/incubator-doris.git
# 如果Github网络受影响,可以登录web页面下载zip压缩包,拷贝至容器中。
# https://codeload.github.com/apache/incubator-doris/zip/refs/heads/master
4 切换时区
#使用tzselect选择时区,然后执行以下命令使其生效
echo "TZ='Asia/Shanghai'
export TZ" >> /etc/profile
source /etc/profile
默认容器内的时区是 UTC,如果不修改时区直接编译源码,运行 doris 的服务器是 CST 时区,启动 doris 时会报错。
换言之:编译环境的时区要与运行环境的时区一致。
5 切换 JDK 版本
alternatives --set java java-1.8.0-openjdk.x86_64
alternatives --set javac java-1.8.0-openjdk.x86_64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
默认使用 OpenJDK 11 编译。确保编译使用的 JDK 版本和运行时使用的 JDK 版本一致,否则会导致非预期的运行错误,这里我们统一为 JDK8 版本。
6 编译
编译 be/fe
sh build.sh --clean --be --fe
编译 broker
cd fs_brokers/apache_hdfs_broker/
./build.sh
Broker 是 Doris 集群中一种可选进程,主要用于支持 Doris 读写远端存储上的文件和目录,如 HDFS、BOS 和 AFS 等。
编译完成后,产出文件在 output/ 目录中,便是可执行的 doris 程序。
因为做了容器目录挂载,在宿主机的 /opt/doris-0.15.0 目录可以看到容器的该目录。