因为看中了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硬盘创建虚拟机的原因。
更多编译过程,可以参考这个二地址:
尽管可能解决不了你的问题!
最后附上另外一个讲解在arm上编译doris的文章,给了我一定的帮助,在此感谢:
https://www.modb.pro/db/403513
以上乱七八糟的记录了一些东西。不知所云,仅给自己留个备查的地方吧。