Spark_3.5.5编译1.0.7+
# 编译前提说明:R 环境必须提前准备
Spark 构建脚本中启用了 --r
参数来支持 sparkr
模块,因此 R 环境必须提前配置,否则编译将会中断。
注意
缺少 R 会导致 make-distribution.sh
脚本失败,无法完成构建过程。
👉 R 环境一键安装脚本 必须准备
# 1. 构建环境准备
整个构建流程基于 Bigtop 提供的打包能力,依赖如下基础工具环境:
环境组件 | 推荐版本 | 安装参考 |
---|---|---|
JDK | 1.8 | ONEKEY——安装JDK1.8 |
Maven | 3.9.9 | ONEKEY——安装Maven3.9.9 |
Gradle | 内嵌于 Bigtop | ONEKEY——安装Gradle5.6.4 |
# 2. 执行打包构建命令
我们使用 Bigtop 中的构建任务 spark-rpm
来一键构建 RPM:
gradle spark-rpm \
-PparentDir=/usr/bigtop \
-Dbuildwithdeps=true \
-PpkgSuffix -d
1
2
3
4
2
3
4
构建过程中,会自动下载 Spark 源码,并进行编译:
接着进入 RPM 构建流程,日志中会显示关键命令:
09:29:52.273 [ERROR] [system.err] + STATUS=0
09:29:52.273 [ERROR] [system.err] + '[' 0 -ne 0 ']'
09:29:52.273 [ERROR] [system.err] + cd spark-3.5.5
09:29:52.273 [ERROR] [system.err] + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
09:29:52.342 [ERROR] [system.err] + exit 0
09:29:52.343 [QUIET] [system.out] Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.y512kQ
09:29:52.344 [ERROR] [system.err] + umask 022
09:29:52.344 [ERROR] [system.err] + cd /opt/modules/bigtop/build/spark/rpm//BUILD
09:29:52.344 [ERROR] [system.err] + cd spark-3.5.5
09:29:52.344 [ERROR] [system.err] + bash /opt/modules/bigtop/build/spark/rpm//SOURCES/do-component-build
09:29:52.345 [ERROR] [system.err] ++ dirname /opt/modules/bigtop/build/spark/rpm//SOURCES/do-component-build
09:29:52.345 [ERROR] [system.err] + . /opt/modules/bigtop/build/spark/rpm//SOURCES/bigtop.bom
09:29:52.345 [ERROR] [system.err] ++ ZOOKEEPER_VERSION=3.5.9
09:29:52.345 [ERROR] [system.err] ++ HADOOP_VERSION=3.3.4
09:29:52.345 [ERROR] [system.err] ++ HBASE_VERSION=2.4.13
09:29:52.345 [ERROR] [system.err] ++ HIVE_VERSION=3.1.3
09:29:52.345 [ERROR] [system.err] ++ TEZ_VERSION=0.10.1
09:29:52.345 [ERROR] [system.err] ++ OOZIE_VERSION=5.2.1
09:29:52.345 [ERROR] [system.err] ++ SOLR_VERSION=8.11.2
09:29:52.345 [ERROR] [system.err] ++ SPARK_VERSION=3.5.5
09:29:52.345 [ERROR] [system.err] ++ FLINK_VERSION=1.17.2
09:29:52.345 [ERROR] [system.err] ++ PHOENIX_VERSION=5.1.2
09:29:52.345 [ERROR] [system.err] ++ BIGTOP_GROOVY_VERSION=2.5.4
09:29:52.345 [ERROR] [system.err] ++ BIGTOP_UTILS_VERSION=3.2.0-SNAPSHOT
09:29:52.345 [ERROR] [system.err] ++ BIGTOP_SELECT_VERSION=3.2.0-SNAPSHOT
09:29:52.345 [ERROR] [system.err] ++ BIGTOP_JSVC_VERSION=1.2.4
09:29:52.345 [ERROR] [system.err] ++ ALLUXIO_VERSION=2.8.0
09:29:52.345 [ERROR] [system.err] ++ KAFKA_VERSION=2.8.1
09:29:52.345 [ERROR] [system.err] ++ YCSB_VERSION=0.17.0
09:29:52.345 [ERROR] [system.err] ++ ZEPPELIN_VERSION=0.10.1
09:29:52.345 [ERROR] [system.err] ++ GPDB_VERSION=5.28.5
09:29:52.346 [ERROR] [system.err] ++ AMBARI_VERSION=2.7.5
09:29:52.346 [ERROR] [system.err] ++ BIGTOP_AMBARI_MPACK_VERSION=2.7.5
09:29:52.346 [ERROR] [system.err] ++ LIVY_VERSION=0.7.1
09:29:52.346 [ERROR] [system.err] ++ RANGER_VERSION=2.4.0
09:29:52.346 [ERROR] [system.err] ++ SQOOP_VERSION=1.4.7
09:29:52.346 [ERROR] [system.err] ++ REDIS_VERSION=7.4.0
09:29:52.346 [ERROR] [system.err] ++ DOLPHINSCHEDULER_VERSION=3.2.2
09:29:52.346 [ERROR] [system.err] ++ DORIS_VERSION=2.1.7
09:29:52.346 [ERROR] [system.err] ++ NIGHTINGALE_VERSION=7.7.2
09:29:52.346 [ERROR] [system.err] ++ CATEGRAF_VERSION=0.4.1
09:29:52.346 [ERROR] [system.err] ++ VICTORIAMETRICS_VERSION=1.109.1
09:29:52.346 [ERROR] [system.err] ++ CLOUDBEAVER_VERSION=24.3.3
09:29:52.346 [ERROR] [system.err] ++ CELEBORN_VERSION=0.5.3
09:29:52.346 [ERROR] [system.err] ++ OZONE_VERSION=1.4.1
09:29:52.346 [ERROR] [system.err] ++ IMPALA_VERSION=4.4.1
09:29:52.346 [ERROR] [system.err] ++ TRINO_VERSION=474
09:29:52.346 [ERROR] [system.err] ++ HUDI_VERSION=1.0.1
09:29:52.346 [ERROR] [system.err] ++ PAIMON_VERSION=1.1.0
09:29:52.346 [ERROR] [system.err] ++ JDK_VERSION=1.8
09:29:52.346 [ERROR] [system.err] ++ SCALA_VERSION=2.12.13
09:29:52.346 [ERROR] [system.err] + BUILD_OPTS='-Divy.home=/root/.ivy2 -Dsbt.ivy.home=/root/.ivy2 -Duser.home=/root -Drepo.maven.org= -Dreacto
r.repo=file:///root/.m2/repository -Dhadoop.version=3.3.4 -Dyarn.version=3.3.4 -Pyarn -Phadoop-3.2 -Phive -Phive-thrif
tserver -Psparkr -Pkubernetes -Pscala-2.12 -Dguava.version=27.0-jre '
09:29:52.346 [ERROR] [system.err] + export 'MAVEN_OPTS=-Xss64m -Xmx4g -XX:ReservedCodeCacheSize=1g'
09:29:52.346 [ERROR] [system.err] + MAVEN_OPTS='-Xss64m -Xmx4g -XX:ReservedCodeCacheSize=1g'
09:29:52.346 [ERROR] [system.err] + ./dev/make-distribution.sh --mvn mvn --r -Divy.home=/root/.ivy2 -Dsbt.ivy.home=/root/.ivy2 -Duser.home=/root -Drepo.maven.org= -Dr
eactor.repo=file:///root/.m2/repository -Dhadoop.version=3.3.4 -Dyarn.version=3.3.4 -Pyarn -Phadoop-3.2 -Phive -Phive-thriftserver -Psparkr -Pkubernetes -Pscala-2.12
-Dguava.version=27.0-jre -DskipTests
09:29:52.347 [ERROR] [system.err] +++ dirname ./dev/make-distribution.sh
09:29:52.348 [ERROR] [system.err] ++ cd ./dev/..
09:29:52.348 [ERROR] [system.err] ++ pwd
09:29:52.348 [ERROR] [system.err] + SPARK_HOME=/opt/modules/bigtop/build/spark/rpm/BUILD/spark-3.5.5
09:29:52.348 [ERROR] [system.err] + DISTDIR=/opt/modules/bigtop/build/spark/rpm/BUILD/spark-3.5.5/dist
09:29:52.348 [ERROR] [system.err] + MAKE_TGZ=false
09:29:52.348 [ERROR] [system.err] + MAKE_PIP=false
09:29:52.348 [ERROR] [system.err] + MAKE_R=false
09:29:52.348 [ERROR] [system.err] + NAME=none
09:29:52.348 [ERROR] [system.err] + MVN=/opt/modules/bigtop/build/spark/rpm/BUILD/spark-3.5.5/build/mvn
09:29:52.348 [ERROR] [system.err] + (( 19 ))
09:29:52.348 [ERROR] [system.err] + case $1 in
09:29:52.348 [ERROR] [system.err] + MVN=mvn
09:29:52.348 [ERROR] [system.err] + shift
09:29:52.348 [ERROR] [system.err] + shift
09:29:52.348 [ERROR] [system.err] + (( 17 ))
09:29:52.348 [ERROR] [system.err] + case $1 in
09:29:52.348 [ERROR] [system.err] + MAKE_R=true
09:29:52.348 [ERROR] [system.err] + shift
09:29:52.348 [ERROR] [system.err] + (( 16 ))
09:29:52.348 [ERROR] [system.err] + case $1 in
09:29:52.348 [ERROR] [system.err] + break
09:29:52.348 [ERROR] [system.err] + '[' -z /opt/modules/jdk1.8.0_202 ']'
09:29:52.348 [ERROR] [system.err] + '[' -z /opt/modules/jdk1.8.0_202 ']'
09:29:52.348 [ERROR] [system.err] ++ command -v git
09:29:52.348 [ERROR] [system.err] + '[' /usr/bin/git ']'
09:29:52.349 [ERROR] [system.err] ++ git rev-parse --short HEAD
09:29:52.882 [ERROR] [system.err] + GITREV=13021fc
09:29:52.882 [ERROR] [system.err] + '[' '!' -z 13021fc ']'
09:29:52.882 [ERROR] [system.err] + GITREVSTRING=' (git revision 13021fc)'
09:29:52.882 [ERROR] [system.err] + unset GITREV
09:29:52.883 [ERROR] [system.err] ++ command -v mvn
09:29:52.884 [ERROR] [system.err] + '[' '!' /opt/modules/apache-maven-3.8.4/bin/mvn ']'
09:29:52.885 [ERROR] [system.err] ++ mvn help:evaluate -Dexpression=project.version -Divy.home=/root/.ivy2 -Dsbt.ivy.home=/root/.ivy2 -Duser.home=/root -Drepo.maven.o
rg= -Dreactor.repo=file:///root/.m2/repository -Dhadoop.version=3.3.4 -Dyarn.version=3.3.4 -Pyarn -Phadoop-3.2 -Phive -Phive-thriftserver -Psparkr -Pkubernetes -Pscal
a-2.12 -Dguava.version=27.0-jre -DskipTests
09:29:52.885 [ERROR] [system.err] ++ grep -v INFO
09:29:52.885 [ERROR] [system.err] ++ tail -n 1
09:29:52.885 [ERROR] [system.err] ++ grep -v WARNING
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
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
我们从日志中提取出最终的实际 Maven 编译命令如下:
mvn clean package -DskipTests -Dmaven.javadoc.skip=true \
-Dmaven.scaladoc.skip=true \
-Dmaven.source.skip \
-Dcyclonedx.skip=true \
-Divy.home=/root/.ivy2 \
-Dsbt.ivy.home=/root/.ivy2 \
-Duser.home=/root \
-Drepo.maven.org= \
-Dreactor.repo=file:///root/.m2/repository \
-Dhadoop.version=3.3.4 \
-Dyarn.version=3.3.4 \
-Pyarn \
-Phadoop-3 \
-Phive \
-Phive-thriftserver \
-Psparkr \
-Pkubernetes \
-Pscala-2.12 \
-Dguava.version=27.0-jre \
-DskipTests
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
相比 Spark 3.2.3,这里 -Phadoop-3.2
被统一为 -Phadoop-3
,其他参数保持一致。构建核心参数
当然你也可以使用官方的脚本,外挂一些其他参数如下所示。
./dev/make-distribution.sh --mvn mvn --r \
-Divy.home=/root/.ivy2 \
-Dsbt.ivy.home=/root/.ivy2 \
-Duser.home=/root \
-Drepo.maven.org= \
-Dreactor.repo=file:///root/.m2/repository \
-Dhadoop.version=3.3.4 \
-Dyarn.version=3.3.4 \
-Pyarn \
-Phadoop-3.2 \
-Phive \
-Phive-thriftserver \
-Psparkr \
-Pkubernetes \
-Pscala-2.12 \
-Dguava.version=27.0-jre \
-DskipTests
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 编译阶段执行截图如下:
编译时间提示
该阶段可能持续 30~60 分钟,期间 CPU 和内存使用率较高,建议在资源充足的机器上执行。
# 3. 编译结果展示
当所有阶段成功完成后,并生成如下 RPM 包文件:
详细文件结构如下图所示:
spark_3_5_5-3.5.5-1.el7.noarch.rpm
spark_3_5_5-core-3.5.5-1.el7.noarch.rpm
spark_3_5_5-datanucleus-3.5.5-1.el7.noarch.rpm
spark_3_5_5-history-server-3.5.5-1.el7.noarch.rpm
spark_3_5_5-master-3.5.5-1.el7.noarch.rpm
spark_3_5_5-python-3.5.5-1.el7.noarch.rpm
spark_3_5_5-sparkr-3.5.5-1.el7.noarch.rpm
spark_3_5_5-thriftserver-3.5.5-1.el7.noarch.rpm
spark_3_5_5-worker-3.5.5-1.el7.noarch.rpm
spark_3_5_5-yarn-shuffle-3.5.5-1.el7.noarch.rpm
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 4. 涉及修改点
按顺序修改即可