OLAP之Doris编译

背景

OLAP下,我选doris,来试试如何安装。

编译

6cm3Lk
根据自己的情况选择对应的环境,我这里按照0.15为例

docker pull apache/incubator-doris:build-env-for-0.15.0

运行镜像

方式一:提前下载好源码,挂载到镜像中

1
docker run -it -v /your/local/.m2:/root/.m2 -v /your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-release/ apache/incubator-doris:build-env-for-0.15.0

这条命令挂载了源码,和maven的本地库,可以避免一些包每次都要下载,其中:
/your/local/.m2: 本地maven仓库的地址
/your/local/incubator-doris-DORIS-x.x.x-release/:源码的路径
/root/incubator-doris-DORIS-x.x.x-release/:源码挂载后的目录名
apache/incubator-doris:build-env-for-0.15.0:刚才拉取的环境

方式二:在docker中拉取源码

1
2
3
4
5
6
7
8
9
① docker run -it apache/incubator-doris:build-env-for-0.15.0

②wget wget https://dist.apache.org/repos/dist/dev/incubator/doris/0.15/0.15.0-rc04/apache-doris-0.15.0-incubating-src.tar.gz    

这个地址只是0.15版本的doris

或者还可以视同git拉取指定版本的源码

git clone --branch branch-0.15 https://github.com/apache/incubator-doris.git

如果是最新主干版本代码,使用 apache/incubator-doris:build-env-latest进行编译
2grt5S

更改jdk版本

从 build-env-1.3.1 的docker镜像起,同时包含了 OpenJDK 8 和 OpenJDK 11,并且默认使用 OpenJDK 11 编译。请确保编译使用的 JDK 版本和运行时使用的 JDK 版本一致,否则会导致非预期的运行错误。你可以使用在进入编译镜像的容器后,使用以下命令切换默认 JDK 版本:
切换到 JDK 8:

1
2
3
$ 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

切换到 JDK 11:

1
2
3
$ alternatives --set java java-11-openjdk.x86_64
$ alternatives --set javac java-11-openjdk.x86_64
$ export JAVA_HOME=/usr/lib/jvm/java-11

编译

1
sh build.sh

注意:
如果你是第一次使用 build-env-for-0.15.0 或之后的版本,第一次编译的时候要使用如下命令:
sh build.sh --clean --be --fe --ui
这是因为 build-env-for-0.15.0 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 –clean 命令强制使用>新版本的 thrift 生成代码文件,否则会出现不兼容的代码。

注:编译整个过程大概2小时以上,是极为痛苦的。T T,本人编译超过10次以上,2台电脑开docker编译,编译过程,遇到多次fail退出,大部分问题是docker内存不足导致,所以务必将docker的内存调到至少10GB,否则一旦编译内存不足就会失败。

2017款macbook pro 编译成功
2022款macbookpro M1 pro 编译失败

痛哭流涕,终于编译完成,见到这个编译完成命令。

eBvN36

进入到output目录,可以看到be,fe,udf三个文件夹,接下来就是安装部署了

我们看到整个doris社区很多人想体验Doris进行尝鲜,但是苦于环境以及服务器的限制,那么我们来制作一下Doris的镜像及尝试用docker搭建集群

OLAP之Doris的docker镜像和集群搭建