Apache Doris 于 2021 年 11 月 29 日迎来了 0.15.0 Release 版本的正式发布!有 99 位 Contributor 为 Apache Doris 提交了近 700 项优化和修复。在 0.15.0 Release 版本中,增加了诸多新功能,对 Apache Doris 的查询性能、易用性、稳定性方面等进行了全面优化。
![](https://img-blog.csdnimg.cn/74e3d4609f694592b63d16adccc62da2.jpg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
本文将详细演示如何一步一步完成编译最新版Apache Doris 0.15版本。
一、下载Docker开发编译镜像
针对不同的Doris版本,需要下载对应的镜像版本。当前,Doris最新release版本是0.15.0。
![](https://img-blog.csdnimg.cn/5eb94e95c2244201b8ad8299ffb9f394.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
选择该版本对应的docker开发编译镜像,如图所示。针对不同的 Doris 版本,需要下载对应的镜像版本。
![](https://img-blog.csdnimg.cn/a5c6d0d368e1412da9c104fccb85df14.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
Apache doris 0.15.0 版本选择使用apache/incubator-doris:build-env-1.4.2 编译。
执行如下命令下载docker镜像:
docker pull apache/incubator-doris:build-env-1.4.2
![](https://img-blog.csdnimg.cn/9ca3b3046cc5468bac89d233687b19ce.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
二、下载Apache Doris源码
当前Apache Doris最新release版本为 0.15.0,如图所示:
![](https://img-blog.csdnimg.cn/fefaefb796aa4ad98322066c2eb945b0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
(1)下载doris源码
创建doris目录(mkdir doris-0.15),然后下载doris源码:
wget https://dlcdn.apache.org/incubator/doris/0.15.0-incubating/apache-doris-0.15.0-incubating-src.tar.gz
执行过程如下所示:
[root@centos-103 ~]# mkdir doris-0.15
[root@centos-103 ~]# cd doris-0.15
[root@centos-103 doris-0.15]#wget https://dlcdn.apache.org/incubator/doris/0.15.0-incubating/apache-doris-0.15.0-incubating-src.tar.gz
![](https://img-blog.csdnimg.cn/6a553b22eac541ceb8f728db476df2d2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
(2)解压
执行如下命令进行源码包解压:
tar vxf apache-doris-0.15.0-incubating-src.tar.gz
解压完成之后,如下所示:
[root@centos-103 doris-0.15]# ls
apache-doris-0.15.0-incubating-src apache-doris-0.15.0-incubating-src.tar.gz
三、启动Docker容器
需要做两个目录映射,一个是maven的repository目录,一个是doris源码目录,避免容器挂了之后之前下载或编译的内容丢失。
Docker启动命令如下所示:
docker run -it -v /root/.m2:/root/.m2 -v /root/doris-0.15/apache-doris-0.15.0-incubating-src:/root/doris-0.15/apache-doris-0.15.0-incubating-src apache/incubator-doris:build-env-1.4.2
![](https://img-blog.csdnimg.cn/0119d2ea0ba14b14916a0db7c2036976.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
在 build-env-1.4.2 的docker镜像中,同时包含了 OpenJDK 8 和 OpenJDK 11,并且默认使用 OpenJDK 11 编译。
可以使用 java -version 命令查看,如上图所示。
请确保编译使用的 JDK 版本和运行时使用的 JDK 版本一致,否则会导致非预期的运行错误。你可以使用在进入编译镜像的容器后,使用以下命令切换默认 JDK 版本:
切换到 JDK 8:
$ 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:
$ alternatives --set java java-11-openjdk.x86_64
$ alternatives --set javac java-11-openjdk.x86_64
$ export JAVA_HOME=/usr/lib/jvm/java-11
由于我们的运行时为JDK 8,因此切换到JDK 8环境。
![](https://img-blog.csdnimg.cn/0c6138cad90245bda8a9e377f90e28c0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
四、编译Doris
现在准备妥当了,可以开始编译Apache Doris源码包了。
在进入docker容器之后,进入到/root/doris-0.15/apache-doris-0.15.0-incubating-src 源码映射目录中,执行编译命令。
sh build.sh
![](https://img-blog.csdnimg.cn/85945058db5349e5a8f7dcf8ed1b0dc6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
开始漫长的编译过程 ...
![](https://img-blog.csdnimg.cn/37ca601fdc2e414c965d5b6f55320618.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
编译过程有点慢。
![](https://img-blog.csdnimg.cn/5276844f50df4ef5ac972134b8cf1e17.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
编译之后输出至output目录,有3个子目录:be、fe、udf,只需要拷贝output目录到其他服务器即可。
[root@c7738df1c0f4 apache-doris-0.15.0-incubating-src]# ls output
be fe udf
退出Docker 容器,然后可以将output目录中的所有内容拷贝到另一个目录中,如/root/doris-0.15,命令如下所示:
cp -r output/* /root/doris-0.15
![](https://img-blog.csdnimg.cn/4e4c503645654d2494b3aa606798a62a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
output目录下,拷贝出来就是可以安装了。
五、编译Doris Broker
仍然需要先进入到docker容器内部,关于docker容器命令,可以访问小编相关的技术文章。
然后进入到doris broker源码目录:fs_brokers,如图所示:
![](https://img-blog.csdnimg.cn/4a791a042db145259ee60b82b98aac94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
下面开始doris-apache-hdfs-broker 的编译过程,如图所示。
![](https://img-blog.csdnimg.cn/4fba070d55bd45b4be308c86d6e0a4b1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
broker的编译过程比较快,如图所示。
![](https://img-blog.csdnimg.cn/7c81ed721d8e40129e0bec80d4825883.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
编译完成之后,可以看到生成的output目录。
![](https://img-blog.csdnimg.cn/0fa9ff7e166d4212bf8be691d22088bd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
现在可以退出docker 容器。在output目录下看到编译好的apache_hdfs_broker目录,拷贝出来即可。
cp -r output/* /root/doris-0.15
![](https://img-blog.csdnimg.cn/c6b0bb2519d64e2fa1bb50972647618e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/10dc083201c54f3c8d36b49ec4953118.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdmJuZXRmdW4=,size_20,color_FFFFFF,t_70,g_se,x_16)