前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Doris 的一场编译之旅

Apache Doris 的一场编译之旅

作者头像
大数据真好玩
发布2021-04-21 11:04:41
4.6K0
发布2021-04-21 11:04:41
举报
文章被收录于专栏:暴走大数据暴走大数据

1 前言

直接访问官方文档,中文的官方文档对于阅读是比较友好的,正常情况下直接对照文档建议的来基本上不会存在大问题。编译部分官方推荐使用官方提供的 Docker 镜像(Dockerfile),这样省去了编译环节中出现的各种环境问题。使用直接编译方式需要注意第三方包的下载一定要下载指定连接的包且务必完整,推荐使用 Docker 镜像方式进行编译,这样不仅可以省去环境的配置,同时编译的时候还省去了不太好下载的几十个三方包的下载。

2 通过 Docker 开发镜像进行编译

这个是官方文档推荐的,可以非常方便顺利的编译源码,如果需要快速部署的,可以使用这种方式。这种方式的优点就是不用配置环境比那辆,也不用考虑各种版本问题,进入开发镜像系统后直接下载 doris 源码编译即可。

首先需要安装 Docker,Docker 在 Linux 下安装比较简单,直接下载 Docker 的 rpm 包安装即可,如果安装中出现如下错误:

代码语言:javascript
复制
error: Failed dependencies: container-selinux >= 2.9 is needed by docker-ce-18.03.1.ce-1.el7.centos.x86_64

下载安装 container-selinux 即可:

代码语言:javascript
复制
# http://mirror.centos.org/centos/7/extras/x86_64/Packages/
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.107-3.el7.noarch.rpm
rpm -ivh container-selinux-2.107-3.el7.noarch.rpm

# 安装 container-selinux 如果提示其它依赖缺失,通过 yum 安装即可

如果已经启动了 Docker 服务(systemctl status docker),我们直接拉取镜像,开始编译 Doris。

apachedoris/doris-dev apachedoris/doris-dev:build-env-1.2 版本 JDK 为 1.8.0_211(需自己配置 jdk 环境变量) CMake 版本为 3.12.3 gcc/g++ 为 7.3.0 Bison 为 3.0.4

代码语言:javascript
复制
# 1 拉取 Doris 官方提供的 Docker 镜像
#  可访问上面的连接,获取可用的镜像版本
#  目前可用版本有:build-env、build-env-1.1、build-env-1.2、、
docker pull apachedoris/doris-dev:build-env-1.2

# 2 查看 Docker 镜像 
docker images
#REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
#apachedoris/doris-dev   build-env-1.2       87dfd327471f        5 months ago        3.26GB
#apachedoris/doris-dev   build-env           fd75ea7306bf        21 months ago       3.85GB

# 3 运行镜像
# 3.1 方式一:直接运行
docker run -it apachedoris/doris-dev:build-env-1.2
# 3.2 方式二【推荐】:挂载本地文件
#  这种方式会将容器中的 maven 下载的包保存到宿主机本地指定的文件中,避免重复下载
#  同时会将编译的 Doris 文件保存到宿主机本地指定的文件,方便部署
docker run -it \
-v /u01/.m2:/root/.m2 \
-v /u01/incubator-doris-DORIS-0.13.0-release/:/root/incubator-doris-DORIS-0.13.0-release/ \
apachedoris/doris-dev:build-env-1.2
# 3.3 以后台进程方式启动
#     将容器中的 22 暴露为宿主机的 20022 端口,这样方便 sftp 访问
#     若不需要 ssh 访问的可以不暴露 22 端口,也可以添加 --privileged=true --cap-add SYS_ADMIN
docker run -p 20022:22 -h "doris-dev" --name="apachedoris" \
--privileged=true --cap-add SYS_ADMIN \
-d apachedoris/doris-dev:build-env-1.2 /usr/sbin/init


# 4 docker 其它操作
# 4.1 查看 docker 容器进程
docker ps
#NER ID        IMAGE                                 COMMAND             CREATED             STATUS              PORTS                   NAMES
#4fadd7f85e44        apachedoris/doris-dev:build-env-1.2   "/usr/sbin/init"    32 seconds ago      Up 31 seconds       0.0.0.0:20022->22/tcp   frosty_raman

# 4.2 进入容器环境
docker exec -it $CONTAINER_ID_flag /bin/bash

后面部分则直接跳到 3.2.5 开始编译 Doris 。

3 直接编译

3.1 前置要求

对于安装,按照官方文档推荐的 Docker 方式部署基本是没问题的,这里主要说明下直接通过源码编译方式需要注意的一些问题,以及参考解决方法。

官方文档直接编译当前最新版本(0.13.0)的源码部分,对的系统有如下要求:

GCC 7.3+ Oracle JDK 1.8+ Python 2.7+ Apache Maven 3.5+ CMake 3.11+ Bison 3.0+

3.2 编译

如果一次性安装所需软件,可以直接使用官方的如下命令:

代码语言:javascript
复制
sudo yum groupinstall 'Development Tools' && sudo yum install maven cmake \
byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget \
python2 glibc-static libstdc++-static java-1.8.0-openjdk

如果需要当个一次安装可以参考下面的步骤

3.2.1 CMake 3.11+

代码语言:javascript
复制
#  0 基本的务必安装
yum install -y zip unzip curl git wget python2

#  1 下载并解压
# 访问 https://cmake.org/files,比如以 linux x86_64 系统为例,安装 3.11.4,可以下载如下
wget https://cmake.org/files/v3.11/cmake-3.11.4-Linux-x86_64.tar.gz
tar -zxf cmake-3.11.4-Linux-x86_64.tar.gz

#  2 编译或创建软连
#cd cmake-3.11.4-Linux-x86_64
#./bootstrap --prefix=/usr/local/cmake
mv cmake-3.11.4-Linux-x86_64 /usr/local/cmake
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

# 3 添加到环境变量
export PATH=$PATH:/usr/local/cmake/bin

# 查看版本验证
cmake --version

3.2.2 GCC 7.3+ 这一步非常重要,最好下载满足条件的版本,耐心的编译,否则因为 GCC 版本或者包的问题容易在编译 Doris 出现一系列莫名的错误,因为 Doris 中依赖了较多的三方库(可以查看 thirdparty/vars.sh),其中有些三方库会一般都需要 对应的版本对 GCC 有一些

代码语言:javascript
复制
# 1 查看环境中的 gcc 是否满足条件
gcc -v

# 2 环境(必须)
yum groupinstall "Development Tools"
yum install -y glibc-static libstdc++-static
yum install -y byacc flex automake libtool binutils-devel ncurses-devel

# 3 下载 GCC 
# 例如这里下载 gcc 7.3.0 版本
# 官网下载页:https://gcc.gnu.org/releases.html
## 
# 3.1 方式一【推荐】:编译方式(以 华中科技大源 为例)
wget http://mirror.hust.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.xz
tar -xf gcc-7.3.0.tar.xz
cd gcc-7.3.0
# 下载需要的包
# 需方访问 ftp://gcc.gnu.org/pub/gcc/infrastructure/,
#  如果失败可以将 mpc-1.0.3.tar.gz、mpfr-3.1.4.tar.bz2、isl-0.16.1.tar.bz2、gmp-6.1.0.tar.bz2 包下载放到项目根目录下
./contrib/download_prerequisites
# 编译
mkdir build
cd build
../configure --prefix=/usr/local/gcc-7.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 若给的资源不够,会导致编译时间较长
make -j$[$(nproc)/4+1]
make install

# 3.2 方式二:解压后创建软连直接使用
wget https://gfortran.meteodat.ch/download/x86_64/releases/gcc-7.5.0.tar.xz
tar -xf gcc-7.5.0.tar.xz
mv gcc-7.5.0 /usr/local/

# 4【可选】卸载或备份
rpm -q gcc
rpm -e gcc-4.8.5-39.el7.x86_64
rpm -q libmpc
rpm -q mpfr
# 【推荐】备份
mv /usr/bin/gcc /usr/bin/gcc_old
mv /usr/bin/g++ /usr/bin/g++_old
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6_old

# 5 创建软连
ln -s /usr/local/gcc-7.3.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-7.3.0/bin/g++ /usr/bin/g++
cp /usr/local/gcc-7.3.0/lib64/libstdc++.so.6.0.24 /usr/lib64/
ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
ln -s /usr/local/gcc-7.3.0/lib64/libatomic.so.1 /usr/lib64/libatomic.so.1


# 5 查看版本以验证
gcc -v
g++ -v
strings /usr/lib64/libstdc++.so.6 | grep GLIBC

3.2.3 Bison 3.0+

代码语言:javascript
复制
# 1 查看当前系统的 Bsion 版本
bison -V

# 2 如果没有,则需要安装
wget http://ftp.gnu.org/gnu/bison/bison-3.0.5.tar.xz
tar -xf bison-3.0.5.tar.xz
cd bison-3.0.5
mkdir build
cd build
../configure --prefix=/usr/local/bison-3.0.5
make && make install

# 3 替换为新版本
mv /usr/bin/bison /usr/bin/bison_old
ln -s /usr/local/bison-3.0.5/bin/bison /usr/bin/bison

3.2.4 其它

Apache Maven 需要 3.5+ 、Oracle JDK 1.8+ 、Python 2.7+ 这些可自行查找相关资料进行安装。

3.2.5 开始编译 Doris

代码语言:javascript
复制
# 1 下载
wget https://mirrors.tuna.tsinghua.edu.cn/apache/incubator/doris/0.13.0-incubating/apache-doris-0.13.0-incubating-src.tar.gz
tar -zxf apache-doris-0.13.0-incubating-src.tar.gz

# 3 【为加速可继续往下看】编译
cd apache-doris-0.13.0-incubating-src
# 从 0.13 版本开始,因为协议的不兼容,移除了 mysql-5.7.18 和 lzo-2.10 库
#  如果需要访问 mysql 外部表,可以编译时手动添加 WITH_MYSQL=1
#  如果需要继续使用 LZO 压缩算法(例如访问早期写入数据时),添加 WITH_LZO=1
#  如果编译的机器网速很慢,可以后台执行  
#WITH_MYSQL=1 sh build.sh >log.txt 2>&1 &
# --clean
WITH_MYSQL=1 sh build.sh

根据 thirdparty/vars.sh)脚本,我们知道在 0.13.0 版本中

代码语言:javascript
复制
# 1 libevent
LIBEVENT_DOWNLOAD="https://doris-incubating-repo.bj.bcebos.com/thirdparty/libevent-20180622-24236aed01798303745470e6c498bf606e88724a.zip"
# 2 openssl
OPENSSL_DOWNLOAD="https://www.openssl.org/source/old/1.0.2/openssl-1.0.2k.tar.gz"
# 3 thrift
THRIFT_DOWNLOAD="http://archive.apache.org/dist/thrift/0.9.3/thrift-0.9.3.tar.gz"
# 4 llvm
LLVM_DOWNLOAD="http://releases.llvm.org/3.4.2/llvm-3.4.2.src.tar.gz"
# 5 clang
CLANG_DOWNLOAD="http://releases.llvm.org/3.4.2/cfe-3.4.2.src.tar.gz"
# 6 compiler-rt
COMPILER_RT_DOWNLOAD="http://releases.llvm.org/5.0.0/compiler-rt-5.0.0.src.tar.xz"
# 7 protobuf
PROTOBUF_DOWNLOAD="https://github.com/google/protobuf/archive/v3.5.1.tar.gz"
# 8 gflags
GFLAGS_DOWNLOAD="https://github.com/gflags/gflags/archive/v2.2.0.tar.gz"
# 9 glog
GLOG_DOWNLOAD="https://github.com/google/glog/archive/v0.3.3.tar.gz"
# 10 gtest
GTEST_DOWNLOAD="https://github.com/google/googletest/archive/release-1.8.0.tar.gz"
# 11 snappy
SNAPPY_DOWNLOAD="https://github.com/google/snappy/archive/1.1.7.tar.gz"
# 12 gperftools
GPERFTOOLS_DOWNLOAD="https://github.com/gperftools/gperftools/archive/gperftools-2.7.tar.gz"
# 13 zlib
ZLIB_DOWNLOAD="https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz"
# 14 lz4
LZ4_DOWNLOAD="https://github.com/lz4/lz4/archive/v1.7.5.tar.gz"
# 15 bzip
BZIP_DOWNLOAD="ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz"
# 16 lzo2
LZO2_DOWNLOAD="http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz"
# 17 rapidjson
RAPIDJSON_DOWNLOAD="https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz"
# 18 curl
CURL_DOWNLOAD="https://curl.haxx.se/download/curl-7.54.1.tar.gz"
# 19 RE2
RE2_DOWNLOAD="https://github.com/google/re2/archive/2017-05-01.tar.gz"
# 20 boost
BOOST_DOWNLOAD="https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz"
# 21 mysql
MYSQL_DOWNLOAD="https://github.com/mysql/mysql-server/archive/mysql-5.7.18.tar.gz"
# 22 boost for mysql
BOOST_FOR_MYSQL_DOWNLOAD="http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz"
# 23 unix odbc
ODBC_DOWNLOAD="http://www.unixodbc.org/unixODBC-2.3.7.tar.gz"
# 24 leveldb
LEVELDB_DOWNLOAD="https://github.com/google/leveldb/archive/v1.20.tar.gz"
# 25 brpc
BRPC_DOWNLOAD="https://github.com/apache/incubator-brpc/archive/0.9.5.tar.gz"
# 26 rocksdb
ROCKSDB_DOWNLOAD="https://github.com/facebook/rocksdb/archive/v5.14.2.tar.gz"
# 27 librdkafka
LIBRDKAFKA_DOWNLOAD="https://github.com/edenhill/librdkafka/archive/v0.11.6-RC5.tar.gz"
# 28 zstd
ZSTD_DOWNLOAD="https://github.com/facebook/zstd/archive/v1.3.7.tar.gz"
# 28 double-conversion
DOUBLE_CONVERSION_DOWNLOAD="https://github.com/google/double-conversion/archive/v3.1.1.tar.gz"
# 30 brotli
BROTLI_DOWNLOAD="https://github.com/google/brotli/archive/v1.0.7.tar.gz"
# 31 flatbuffers
FLATBUFFERS_DOWNLOAD="https://github.com/google/flatbuffers/archive/v1.10.0.tar.gz"
# 32 arrow
ARROW_DOWNLOAD="https://github.com/apache/arrow/archive/apache-arrow-0.15.1.tar.gz"
# 33 S2
S2_DOWNLOAD="https://github.com/google/s2geometry/archive/v0.9.0.tar.gz"
# 34 BITSHUFFLE
BITSHUFFLE_DOWNLOAD="https://github.com/kiyo-masui/bitshuffle/archive/0.3.5.tar.gz"
# 35 CROARINGBITMAP
CROARINGBITMAP_DOWNLOAD="https://github.com/RoaringBitmap/CRoaring/archive/v0.2.60.tar.gz"
# 36 ORC
ORC_DOWNLOAD="https://archive.apache.org/dist/orc/orc-1.5.8/orc-1.5.8.tar.gz"
# 37 jemalloc
JEMALLOC_DOWNLOAD="https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2"
# 38 CCTZ
CCTZ_DOWNLOAD="https://github.com/google/cctz/archive/v2.3.tar.gz"
# 39 datatables, bootstrap 3 and jQuery 3
DATATABLES_DOWNLOAD="https://datatables.net/download/builder?bs-3.3.7/jq-3.3.1/dt-1.10.22"
# 40 bootstrap table js
BOOTSTRAP_TABLE_JS_DOWNLOAD="https://unpkg.com/bootstrap-table@1.17.1/dist/bootstrap-table.min.js"
# 41 bootstrap table css
BOOTSTRAP_TABLE_CSS_DOWNLOAD="https://unpkg.com/bootstrap-table@1.17.1/dist/bootstrap-table.min.css"

因为第三方下载连接的问题,dt-1.10.22 会下载失败,详细可查看 Issues #5128 或 PR [Thirdparty] Fix the DataTables.zip download issue。因此 thirdparty/vars.sh 第 285-289 行修改为如下

代码语言:javascript
复制
# datatables, bootstrap 3 and jQuery 3
DATATABLES_DOWNLOAD="https://datatables.net/download/builder?bs-3.3.7/jq-3.3.1/dt-1.10.23"  #DATATABLES_DOWNLOAD="https://datatables.net/download/builder?bs-3.3.7/jq-3.3.1/dt-1.10.22"
DATATABLES_NAME="DataTables.zip"
DATATABLES_SOURCE="DataTables-1.10.23"  #DATATABLES_SOURCE="DataTables-1.10.22"
DATATABLES_MD5SUM="f7f18a9f39d692ec33b5536bff617232"    #DATATABLES_MD5SUM="62558846fc6a6db1428e7816a2a351f7"

编译构建时默认使用 PARALLEL=[(nproc)/4+1] 进程资源数,如果CPU 进程资源充足,可以调大,修改 build.sh 脚本第 44 行 vim build.sh +44。

为了方便大家构架编译,这里我把 apache-doris-0.13.0 涉及到的三方包已经上传到云盘 【百度与】提取码:j06r ,需要的可以直接下载,并将其放到 thirdparty/src 下,注意每个包的 MD5 值,如果下载的包不一致则编译前会重新下载,可以通过 md5sum 包文件 查看其 md5 值(如果使用的我提供百度云连接,可以查看 !vars.sh ,保持一致即可)。

3.3 问题解决

3.3.1 js_generator.cc:(.text+0xfc3c): undefined reference to `well_known_types_js’ 查找 Doris 源码中的 js_embed,一般在三方库的 protobuf 下,直接移除掉,重新编译即可

代码语言:javascript
复制
find ./ -name js_embed
 mv ./thirdparty/src/protobuf-3.5.1/src/js_embed ./

3.3.2 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found

问题的原因就是在使用 gcc 编译时,使用本地环境的库 libstdc++.so.6 中的方法时找不到需要的信息,一般是在安装或升级是没有把环境变量的这个库文件升级,解决方法如下:

代码语言:javascript
复制
find / -name "libstdc++.so*"
cd /usr/lib64
strings /usr/lib64/libstdc++.so.6 | grep GLIBC

# 查看 /usr/lib64 目录下的 libstdc 开头的文件
[root@aliyun01 lib64]# ll libstdc*
lrwxrwxrwx 1 root root     19 Nov 19 09:07 libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x 1 root root 995840 Sep 30 10:17 libstdc++.so.6.0.19

# 把高版本的拷贝到 /usr/lib64 下
cp /usr/local/gcc-7.3.0/lib64/libstdc++.so.6.0.24 ./
# 创建软连接
rm libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6

3.3.3 libatomic.so.1: cannot open shared object file: No such file or directory

编译三方包时如果报如下的错误

代码语言:javascript
复制
./comp_err: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory
make[3]: *** [include/mysqld_error.h] Error 127
make[2]: *** [extra/CMakeFiles/GenError.dir/all] Error 2
make[1]: *** [libmysql/CMakeFiles/mysqlclient.dir/rule] Error 2
make: *** [mysqlclient] Error 2

原因是安装 gcc 或升级之后,其中的 libatomic.so.1 包没有在环境变量中生效,我们直接将新版本 gcc 的安装目录下的 libatomic.so.1 软连到 /usr/lib64 下即可。

代码语言:javascript
复制
ln -s /usr/local/gcc-7.3.0/lib64/libatomic.so.1 /usr/lib64/libatomic.so.1

3.3.4 Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)

在编译安装 GCC 7.3 时,其中我们安装了 ncurses-devel,如果忽略了这个,系统环境又没有安装,则在编译 Doris 时就会报这个错误,解决方法就是 yum 安装这个依赖。

代码语言:javascript
复制
yum install ncurses-devel

3.3.5 configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

环境中缺少依赖,解决方法如下:

代码语言:javascript
复制
 yum install  gmp  gmp-devel  mpfr  mpfr-devel  libmpc  libmpc-devel

3.3.6 error while loading shared libraries: libisl.so.15: cannot open shared object file: No such file or directory

这个问题比较隐蔽,通过访问 http://rpm.pbone.net/ 搜索 libisl.so.15 库。

在查询出的结果中,我们查找 CentOS7 的条目,可以发下这个库为 libisl15-0.18-9.94.el7.x86_64.rpm,到这里问题就好解决了,我们直接下载这个包安装即可

代码语言:javascript
复制
wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/aevseev:/devel/CentOS7/x86_64/libisl15-0.18-9.94.el7.x86_64.rpm
rpm -ivh libisl15-0.18-9.94.el7.x86_64.rpm

3.3.7 Plugin net.sourceforge.czt.dev:cup-maven-plugin:1.6-cdh or one of its dependencies could not be resolved

在编译到 fe 中的项目时报如下的错误

代码语言:javascript
复制
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] fe-common 1.0.0 .................................... SUCCESS [01:45 min]
[INFO] spark-dpp 1.0.0 .................................... SUCCESS [02:37 min]
[INFO] fe-core 3.4.0 ...................................... FAILURE [  1.726 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  04:25 min
[INFO] Finished at: 2021-02-02T20:39:34+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Plugin net.sourceforge.czt.dev:cup-maven-plugin:1.6-cdh or one of its dependencies could not be resolved: Could not find artifact net.sourceforge.czt.dev:cup-maven-plugin:jar:1.6-cdh in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public) -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

根据官方提供的问题解决方法,参考 PR #4769 ,我们直接修改 fe/pom.xml,如下图所示,保存后然后再次编译项目。

3.3.8 Could not resolve dependencies for project org.apache:fe-core:jar:3.4.0: Failure to find com.sleepycat:je:jar:7.3.7 原因就是通过 https://repo.spring.io/libs-milestone/com/sleepycat/je/7.3.7/je-7.3.7.jar 下载包时需要用户认证,所以会下载失败,可以在 Maven 配置文件 setting.xml 中新增如下的仓库镜像,重新编译即可。

代码语言:javascript
复制
 <mirror>
      <id>oracleReleases</id>
      <mirrorOf>oracleReleases</mirrorOf>
      <name>Oracle Released Java Packages</name>
      <url>http://download.oracle.com/maven</url>
    </mirror>

3.3.9 A required class was missing while executing net.sourceforge.czt.dev:cup-maven-plugin:1.6-cdh:generate: org/sonatype/plexus/build/incremental/BuildContext 清除 Maven 本地仓库的 cup-maven-plugin(Maven 配置的仓库路径下的 net/sourceforge/czt/dev/cup-maven-plugin/1.6-cdh),为了防止其他镜像资源的影响,可以先将本地 Maven 配置文件中添加的其它镜像注释掉,可以只保留下面的一个镜像,用来可以正常下载 je-7.3.7.jar 依赖包。

代码语言:javascript
复制
</mirrors>
    <mirror>
      <id>oracleReleases</id>
      <mirrorOf>oracleReleases</mirrorOf>
      <name>Oracle Released Java Packages</name>
      <url>http://download.oracle.com/maven</url>
    </mirror>
</mirrors>

Doris 源码下的 fe/pom.xml 中的标签里的检查下,可以修改为如下链接,然后再次执行编译即可,

代码语言:javascript
复制
<!-- for general repository -->
<profile>
        <id>general-env</id>
        <activation>
                <property>
                        <name>!env.CUSTOM_MAVEN_REPO</name>
                </property>
        </activation>

        <repositories>
                <repository>
                        <id>central</id>
                        <name>central maven repo https</name>
                        <url>https://repo.maven.apache.org/maven2</url>
                </repository>
                <!-- for java-cup -->
                <repository>
                        <!---<id>cloudera-thirdparty</id>
                        <url>https://repository.cloudera.com/content/repositories/third-party/</url>-->
                        <id>cloudera-public</id>
                        <url>https://repository.cloudera.com/artifactory/public/</url>
                </repository>
                <!-- for bdb je -->
                <repository>
                        <id>oracleReleases</id>
                        <url>http://download.oracle.com/maven</url>
                </repository>
        </repositories>

        <pluginRepositories>
                <pluginRepository>
                        <id>spring-plugins</id>
                        <!--<url>https://repo.spring.io/plugins-release/</url>-->
    <url>https://repository.cloudera.com/artifactory/ext-release-local</url>
                </pluginRepository>
                <!-- for cup-maven-plugin -->
                <pluginRepository>
                        <!--<id>cloudera-plugins</id>
                        <url>https://repository.cloudera.com/content/groups/public/</url>-->
                        <id>cloudera-public</id>
                        <url>https://repository.cloudera.com/artifactory/public/</url>
                </pluginRepository>
        </pluginRepositories>
</profile>

其中可参考 BUILD FAILURE #3129

3.4 编译成功

Doris 编译成功后控制台显示如下 Successfully build Doris

同时编译成功后会在项目根目录下生成 output/,其中为编译之后可以直接部署的二进制包,大概有 1.2GB。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据真好玩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2 通过 Docker 开发镜像进行编译
  • 3 直接编译
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档