记一次编译Apache Doris的经历

原创
2022/07/09 17:09
阅读数 2.1K

因为看中了Doris的分布式数据,MPP,OLAP,以及毫秒级的查询等这些实在吸引人的特性,觉得部署一个试试。

从官方下载1.0的二进制版,放到Ubuntu 22上运行,结果报无法找到链接符号(不记得具体的内容了)。反正是无法运行。

于是决定自己动手编译,提前已经做好了被虐的准备,但整个过程还是被差点虐哭了。这里记录一下,算是给自己一个慰藉:

官方地址:https://doris.apache.org/zh-CN/

一、根据官方指导,下载docker镜像的编译环境,辛苦下载,运行,拉取源码,结果报各种错误(这里的辛苦历程就不意义赘述了),

最后以失败告终。后来总结的主要问题是:下载和编译第三方代码出错了。应该是网络不行。

二、失败后,决定自己搭建编译环境,但还是失败了,估计编译器的兼容性问题。

这里重点介绍使用LDB toolchain 编译 Doris的过程。

第一步:使用Oracle VM VirtualBox新建虚拟机。注意:内存给8G,硬盘给100G,如果是4G内存编译的时候会崩溃,如果硬盘只有50G,会报

硬盘空间不足(这点是最坑的)。

第二步:安装Ubuntu 22 server版。有点注意,第一步给的硬盘100G,但默认只会使用50G,还有50G不会使用,我在这里卡了几个小时,主要

就是把未分配的磁盘空间扩容到根挂载点。所以,安装的时候注意,这里就避免踩坑。

第三步:配置环境:

0、安装依赖,ubuntu使用如下命令:

 

sudo apt install build-essential cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo apt update
sudo apt install gcc-10 g++-10 
sudo apt-get install autoconf automake libtool autopoint

注意:这里上述命令我没安装open-jdk,maven,pythone,是因为下面这些软件要按我自己的要求使用特定版本。

1、安装oracle jdk1.8,(如果你想使用jdk11,就安装jdk11)。配置JAVA_HOME和把bin加入到PATH

2、安装maven,我使用的是maven3.8.6,记得配置M2_HOME和把bin加入到PATH

3、安装python,这里必须使用python2.7.x。我下载了python2.7.6的源码,然后编译,安装。

4、安装node,下载node 12.13的源码,编译,安装。

5、从这里https://github.com/amosbird/ldb_toolchain_gen/releases/download/v0.11/ldb_toolchain_gen.sh

下载ldb,然后执行:

sh ldb_toolchain_gen.sh /opt/ldb_toolchain/

注意,我是安装到/opt/ldb_toolchain目录下。你想安装到到哪随你。

然后把 /opt/ldb_toolchain/bin路径增加到PATH里,注意:一定要放到最前面。放后面还会使用系统自带的编译器。

然后拉取Doris源码,解压。

进入到thirdparty目录,执行里面的build-thirdparty.sh脚本,这个过程一定要保证网络良好,否则,某一个库下载不正常,就得重头来。

这里会出现一个问题:也就是后面编译Doris源码的时候会遇到一个坑。这里提前做,免得还得回过来做一次。

因为编译libxml2库会出错,后面面编译Doris源码会报如下错误:

Couldn't find pkg.m4 from pkg-config. Install the appropriate package for your distribution or set ACLOCAL_PATH to the directory containing pkg.m4.

这里在编译完第一遍第三方库的时候,记得将/opt/ldb_toolchain/share/ldb/aclocal 目录下的 pkg.m4文件拷贝至thirdparty/src/libxml2-v2.9.10/m4目录下,重新编译第三方库,如果报已经存在软连接,就执行如下三个删除命令:

rm {你的Doris源码目录}/thirdparty/installed/bin/lz4c
rm {你的Doris源码目录}/thirdparty/installed/bin/lz4cat
rm {你的Doris源码目录}/thirdparty/installed/bin/unlz4

然后重新编译第三方库。

等第三方库编译完,回到Doris的源码目录,直接运行该目录下编译脚本

./build.sh --clean --fe --be --ui --j2

然后就是漫长的编译过程,我编译了整整6个小时。

期间因为内存只给4G,编译进程崩了一次,然后扩大到8G,但硬盘又报空间不足。扩硬盘又折腾了1个小时。这就是开头为什么要给8G内存,100G硬盘创建虚拟机的原因。

更多编译过程,可以参考这个二地址:

https://doris.apache.org/zh-CN/blogs/PracticalCases/doris-tutorial-compilation.html#_1-%E9%83%A8%E7%BD%B2%E6%B5%81%E7%A8%8B

尽管可能解决不了你的问题!

最后附上另外一个讲解在arm上编译doris的文章,给了我一定的帮助,在此感谢:

https://www.modb.pro/db/403513

以上乱七八糟的记录了一些东西。不知所云,仅给自己留个备查的地方吧。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部