Doris_2.1.7 编译
# 1. 构建环境准备与依赖
Doris 2.1.7 编译同样强依赖 Bigtop 体系,强烈建议直接在官方 Bigtop 容器或预设环境下完成,极大减少环境不一致导致的构建失败。
环境组件 | 推荐版本 | 安装参考 |
---|---|---|
JDK | 1.8 | ONEKEY——安装JDK1.8 |
Maven | 3.8.4 | ONEKEY——安装Maven3.8.4 |
Gradle | 内嵌于 Bigtop | ONEKEY——安装Gradle5.6.4 |
提示
如未配置上述环境,可参考本站 JDK、Maven、Gradle 文档。不仅有详细安装说明,还附带一键安装脚本与离线包下载,覆盖主流运维场景,极大提升稳定性与复现度。
# 2. 源码包准备与离线编译建议
Doris 的源码包建议提前下载,默认存放路径为 /opt/modules/bigtop/dl/doris-2.1.7.tar.gz
,首次构建会自动检测,缺失时自动尝试联网下载。
警告
企业云环境/内网环境建议务必提前下载所有源码和依赖包,否则编译过程中网络波动或墙代理问题易致失败。
# 3. 一键构建命令与参数说明 推荐
进入 Bigtop 根目录后,直接执行如下命令:
gradle doris-rpm -PparentDir=/usr/bigtop -Dbuildwithdeps=true -PpkgSuffix -d
1
如果没有下载过,会自动触发下载
参数 | 作用说明 |
---|---|
-PparentDir | 指定 Bigtop 根路径,推荐必填 |
-Dbuildwithdeps=true | 强制自动拉取全部依赖组件,保证依赖完整 |
-PpkgSuffix | 自定义包名后缀,选填 |
-d | 输出详细调试日志,有助问题定位 |
注意
务必确认当前 JAVA_HOME
、M2_HOME
等变量已正确指向实际路径,避免依赖找不到。
# 4. 编译流程与关键日志解析
执行 gradle 任务后,Bigtop 会自动串联底层脚本与 Maven 任务,核心日志示例:
成功时,产物将归档到 output 目录,详见下节。编译日志片段
+ grep -q avx2 /proc/cpuinfo
+ WITH_MYSQL=ON
+ sh build.sh --meta-tool --index-tool --fe --be --broker --spark-dpp --hive-udf --be-java-extensions
+++ dirname build.sh
++ cd .
++ pwd
+ ROOT=/opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03
+ export DORIS_HOME=/opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03
+ DORIS_HOME=/opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03
+ . /opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03/env.sh
++ export LC_ALL=C
++ LC_ALL=C
++ [[ -z /opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03 ]]
++ [[ -n linux-gnu ]]
++ [[ linux-gnu != \l\i\n\u\x\-\g\n\u ]]
+++ uname -s
++ [[ Linux == \D\a\r\w\i\n ]]
++ [[ -f /opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03/custom_env.sh ]]
++ [[ -z '' ]]
++ export DORIS_THIRDPARTY=/opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03/thirdparty
++ DORIS_THIRDPARTY=/opt/modules/bigtop/build/doris/rpm/BUILD/doris-2.1.7-rc03/thirdparty
++ [[ -z '' ]]
++ DORIS_BUILD_PYTHON_VERSION=python
++ export PYTHON=python
++ PYTHON=python
++ python --version
Python 3.9.18
++ [[ -z '' ]]
+++ uname -s
++ [[ Linux == \D\a\r\w\i\n ]]
++ DORIS_TOOLCHAIN=clang
++ [[ clang == \g\c\c ]]
++ [[ clang == \c\l\a\n\g ]]
++ [[ -z '' ]]
++++ command -v clang
+++ dirname /opt/modules/ldb_tool/bin/clang
++ DORIS_CLANG_HOME=/opt/modules/ldb_tool/bin/..
++ export DORIS_CLANG_HOME
++ export CC=/opt/modules/ldb_tool/bin/../bin/clang
++ CC=/opt/modules/ldb_tool/bin/../bin/clang
++ export CXX=/opt/modules/ldb_tool/bin/../bin/clang++
++ CXX=/opt/modules/ldb_tool/bin/../bin/clang++
++ test -x /opt/modules/ldb_tool/bin/../bin/ld.lld
++ export DORIS_BIN_UTILS=/opt/modules/ldb_tool/bin/../bin/
++ DORIS_BIN_UTILS=/opt/modules/ldb_tool/bin/../bin/
++ [[ -f /opt/modules/ldb_tool/bin/../bin/llvm-symbolizer ]]
++ export ASAN_SYMBOLIZER_PATH=/opt/modules/ldb_tool/bin/../bin/llvm-symbolizer
++ ASAN_SYMBOLIZER_PATH=/opt/modules/ldb_tool/bin/../bin/llvm-symbolizer
++ covs=()
+++ find /opt/modules/ldb_tool/bin/.. -name 'llvm-cov*'
++ IFS=
++ read -r line
++ covs+=("${line}")
++ IFS=
++ read -r line
++ [[ 1 -ge 1 ]]
++ LLVM_COV=/opt/modules/ldb_tool/bin/../bin/llvm-cov-16
++ export LLVM_COV
++ profdatas=()
+++ find /opt/modules/ldb_tool/bin/.. -name 'llvm-profdata*'
++ IFS=
++ read -r line
++ profdatas+=("${line}")
++ IFS=
++ read -r line
++ [[ 1 -ge 1 ]]
++ LLVM_PROFDATA=/opt/modules/ldb_tool/bin/../bin/llvm-profdata-16
++ export LLVM_PROFDATA
++ [[ -z '' ]]
++ ENABLE_PCH=ON
++ export CCACHE_COMPILERCHECK=content
++ CCACHE_COMPILERCHECK=content
++ [[ ON == \O\N ]]
++ export CCACHE_PCH_EXTSUM=true
++ CCACHE_PCH_EXTSUM=true
++ export CCACHE_SLOPPINESS=pch_defines,time_macros
++ CCACHE_SLOPPINESS=pch_defines,time_macros
++ [[ -z /opt/modules/ldb_tool/bin/../bin/ ]]
++ [[ -z '' ]]
++++ command -v gcc
+++ dirname /opt/modules/ldb_tool/bin/gcc
++ DORIS_GCC_HOME=/opt/modules/ldb_tool/bin/..
++ export DORIS_GCC_HOME
++ [[ ! -f /opt/modules/ldb_tool/bin/../bin/gcc ]]
+++ /opt/modules/ldb_tool/bin/../bin/gcc -Wp,-v -xc++ - -fsyntax-only
+++ tr '\n' ' '
+++ echo
+++ grep -E '^\s+/'
+++ awk '{print "-I" $1}'
++ CLANG_COMPATIBLE_FLAGS='-I/opt/modules/ldb_tool/include/c++/11 -I/opt/modules/ldb_tool/include/x86_64-linux-gnu/c++/11 -I/opt/modules/ldb_tool/include/c++/11/backward -I/opt/modules/ldb_tool/lib/gcc/x86_64-lin
ux-gnu/11/include -I/opt/modules/ldb_tool/usr/include/x86_64-linux-gnu -I/opt/modules/ldb_tool/usr/include '
++ export CLANG_COMPATIBLE_FLAGS
++ test -z ''
+++ flex --version
+++ awk '{print $2}'
++ flex_ver=2.6.4
++ required_ver=2.6.0
+++ printf '%s\n' 2.6.0 2.6.4
+++ sort -V
+++ head -n1
++ [[ ! 2.6.0 = \2\.\6\.\0 ]]
++ [[ -z /opt/modules/jdk1.8.0_202 ]]
++ JAVA=/opt/modules/jdk1.8.0_202/bin/java
++ JAVAP=/opt/modules/jdk1.8.0_202/bin/javap
++ export JAVA
++ [[ ! -x /opt/modules/jdk1.8.0_202/bin/java ]]
+++ /opt/modules/jdk1.8.0_202/bin/javap -verbose java.lang.String
+++ cut -d ' ' -f5
+++ grep 'major version'
++ JAVA_VER=52
++ [[ 52 -lt 52 ]]
++ MVN_CMD=mvn
++ [[ -n '' ]]
++ mvn --version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /opt/modules/apache-maven-3.8.4
Java version: 1.8.0_202, vendor: Oracle Corporation, runtime: /opt/modules/jdk1.8.0_202/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "6.6.87.1-microsoft-standard-wsl2", arch: "amd64", family: "unix"
++ export MVN_CMD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# 5. 编译产物与输出目录
最终产物在如下路径:
/opt/modules/bigtop/output/doris/x86_64
1
例如:
drwxr-xr-x 2 root root 4096 Jun 11 17:02 .
drwxr-xr-x 3 root root 4096 Jun 11 17:02 ..
-rw-r--r-- 1 root root 6296 Jun 11 17:02 doris_3_2_0-2.1.7-1.el8.x86_64.rpm
-rw-r--r-- 1 root root 1402241352 Jun 11 17:02 doris_3_2_0-doris-be-2.1.7-1.el8.x86_64.rpm
-rw-r--r-- 1 root root 735064512 Jun 11 17:02 doris_3_2_0-doris-fe-2.1.7-1.el8.x86_64.rpm
-rw-r--r-- 1 root root 539845844 Jun 11 17:02 doris_3_2_0-doris-hdfs_broker-2.1.7-1.el8.x86_64.rpm
(base) [root@rocky8 x86_64]# pwd
/opt/modules/bigtop/output/doris/x86_64
(base) [root@rocky8 x86_64]#
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 6. 常见问题与后续集成
Doris 包二次开发与适配过程常需涉及如下修改(参考实际业务需求可按需调整):
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16