CentOS 8 安装 Apache Auron 指南

在 CentOS 8 上从零安装 Apache Auron 8.0.0-incubating 的完整实录:EOL 后切换阿里云 8.5.2111 归档源、安装 java-17 与显式 JAVA_HOME、Rust nightly 工具链、源码构建双方案、Spark 3.5.8 集成、200 万行端到端验证与 el8 特有 FAQ 全实测。

Apache AuronApache Auron2026/10/15

CentOS 8 安装 Apache Auron 指南

目标:在 CentOS 8 服务器上从零完成 Apache Auron 8.0.0-incubating 的获取、校验、源码构建与 Spark 3.5.8 集成,产出在本机可运行的加速 fat JAR 并跑通 200 万行聚合查询。CentOS 8 已停止维护,本文第一章起即处理 EOL 带来的软件源问题;全部命令与回显均为真实执行记录。

一、环境信息

项目实测环境
操作系统CentOS Linux 8(x86_64),软件包来自 8.5.2111 归档内容集
CPU / 内存12 核 / 39 GB
磁盘根分区 300 GB 级,全程占用约 6 GB
网络可访问公网;境外资源经代理 192.168.1.62:7897 转发,境内走 TUNA 镜像直连

安装完成后的软件基线(各步实测回显):

软件版本来源
java-17-openjdk17.0.1(el8_5 构建)阿里云 8.5.2111 归档源
Rust 工具链rustc 1.88.0-nightly(50aa04180 2025-05-08)rustup,钉定 nightly-2025-05-09
gcc / protoc8.5.0 / 3.5.0(el8 AppStream)归档源
Maven3.5.4(Red Hat 3.5.4-5,仅 FAQ 演示用)归档源
Apache Spark3.5.8(Scala 2.12.18)官方二进制包(TUNA 镜像)
Apache Auron8.0.0-incubating(fat JAR,42,206,700 字节,含 libauron.so 86,926,344 字节)源码构建

⚠️ CentOS 8 于 2021-12-31 EOL,官方源已迁移至 vault.centos.org(直连会 403),本文统一使用阿里云归档 mirrors.aliyun.com/centos-vault/。8.x 各小版本归档中,8.5.2111 及之后才提供 java-17 软件包(实测 java-17-openjdk 解析为 17.0.1.0.12-2.el8_5 构建),因此归档源必须指向 8.5.2111。

二、前置条件

  1. root 权限,全程以 root 执行。
  2. 先修复 EOL 软件源(核心步骤,不做后面所有 dnf 都会失败)。把 mirrorlist 全部注释、baseurl 指向阿里云归档(实测命令):
sed -i -e "s|mirrorlist=|#mirrorlist=|g" -e "s|#baseurl=http://mirror.centos.org|baseurl=https://mirrors.aliyun.com/centos-vault|g" /etc/yum.repos.d/CentOS-*.repo
dnf clean all && dnf makecache

dnf makecache 正常拉取元数据即源切换成功;此后所有 dnf install 均从归档源出包。

  1. 安装基础工具(实测一并安装 curl、unzip、gnupg 等):
dnf install -y curl unzip gnupg
  1. 磁盘与内存:df -h /root 确认可用超过 15 GB;free -h 确认内存至少 8 GB(Rust release 编译为内存大户)。

三、版本选型说明

3.1 版本谱系(官方归档页实测数据)

版本发布日期状态
8.0.0-incubating2026-07-18孵化期,当前最新(本文采用)
7.0.0-incubating2026-03-04孵化期
6.0.0-incubating2025-10-17孵化期,进入 ASF 后首个发布
5.0.02025-04-28进入 ASF 前版本
4.0.1 / 4.0.02024-12-10 / 2024-10-10进入 ASF 前版本
3.0.1 及更早2024-07 起历史版本

3.2 获取渠道对比

💡 技术拓展:获取渠道的多寡直接决定安装方式,Auron 的现实是只有源码一条官方路——

渠道可得内容实测结论
ASF 官方下载目录 downloads.apache.org/incubator/auron/仅源码包 tgz + asc + sha512可用,本文采用
Maven 中央仓库 repo1.maven.org/maven2/org/apache/auron/无任何坐标实测 404,不存在
GitHub 仓库源码与构建脚本,无预编译产物可用于读源码
第三方构建/分发渠道无官方背书不建议生产使用

本文采用 ASF 官方源码包 + 本机源码构建。

3.3 组件兼容矩阵与 CentOS 8 的特殊约束

组件支持范围本文选择CentOS 8 约束
JDK8 / 11 / 1717归档源中 el8_5 才有 java-17,且版本为 17.0.1
Spark3.0 – 3.5,8.0.0 起新增 4.0 / 4.13.5.8无
Scala2.12 / 2.132.12无
glibc2.28(el8 自带)本机构建不可复用更高 glibc 系统构建的 JAR(见 FAQ Q3)
protoc官方未设硬门槛3.5.0(el8 自带)实测可完成构建

四、方案 A:源码构建安装(官方推荐)

4.1 方案说明

与所有发行版一致:Auron 由 Java 侧(Spark 扩展)与 Rust 侧(基于 Apache Arrow-DataFusion 的 native 引擎)组成,auron-build.sh 先编译 Rust 得到 libauron.so,再由 Maven 打成 fat JAR。CentOS 8 上的差异点全部在工具链:JDK 17 要显式指定 JAVA_HOME、gcc/protoc 版本较老但够用、Rust 用 rustup 安装与 Ubuntu 相同。

4.2 安装 JDK 17

dnf install -y java-17-openjdk-devel

实测安装摘要(尾部回显):

Installed:
  java-17-openjdk-1:17.0.1.0.12-2.el8_5.x86_64
  java-17-openjdk-devel-1:17.0.1.0.12-2.el8_5.x86_64
  java-17-openjdk-headless-1:17.0.1.0.12-2.el8_5.x86_64

el8 的 java-17 不接管系统默认 java(alternatives 中 java-1.8.0 优先级更高),必须显式使用:

/usr/lib/jvm/java-17-openjdk/bin/java -version
openjdk version "17.0.1" 2021-10-19 LTS
OpenJDK Runtime Environment 18.9 (build 17.0.1+12-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 17.0.1+12-LTS, mixed mode, sharing)

本文统一把 JDK 17 定位在 /usr/lib/jvm/java-17-openjdk,后续所有构建命令都显式携带 JAVA_HOME=/usr/lib/jvm/java-17-openjdk(原因见 FAQ Q2)。

4.3 安装 C/C++ 编译工具

dnf install -y gcc gcc-c++ make
gcc --version | head -1
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-22)

protoc 使用 el8 AppStream 自带版本:

dnf install -y protobuf-compiler && protoc --version
protoc 3.5.0

实测结论:protoc 3.5.0 虽旧,8.0.0-incubating 的完整构建(含 protobuf 代码生成)可正常完成;pkg-config 同样建议装上(dnf install -y pkg-config)。

4.4 安装 Rust nightly 工具链

源码树 rust-toolchain.toml 钉定 nightly-2025-05-09(组件含 rust-src、rustfmt、clippy),rustup 安装同版本:

export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897
curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup-init.sh
sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain nightly-2025-05-09 --component rust-src,rustfmt,clippy
. $HOME/.cargo/env
rustc --version
rustc 1.88.0-nightly (50aa04180 2025-05-08)
warning: many Rust crates require a system C toolchain, please install one (e.g. via `dnf install gcc` or `apt install gcc`)

rustc 1.88.0-nightly 在 el8(glibc 2.28)上正常运行;warning 提示的正是 4.3 节安装的 gcc,先装 gcc 再装 rustup 即不会出现。

4.5 下载源码包并校验

export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897
mkdir -p /root/auron-src && cd /root/auron-src
curl -sO https://downloads.apache.org/incubator/auron/auron-8.0.0-incubating/apache-auron-8.0.0-incubating-source.tgz
curl -sO https://downloads.apache.org/incubator/auron/auron-8.0.0-incubating/apache-auron-8.0.0-incubating-source.tgz.asc
curl -sO https://downloads.apache.org/incubator/auron/auron-8.0.0-incubating/apache-auron-8.0.0-incubating-source.tgz.sha512
curl -s https://downloads.apache.org/incubator/auron/KEYS -o KEYS
ls -l apache-auron-8.0.0-incubating-source.tgz*
-rw-r--r-- 1 root root 1480746 Jul  7  2026 apache-auron-8.0.0-incubating-source.tgz
-rw-r--r-- 1 root root      866 Jul  7  2026 apache-auron-8.0.0-incubating-source.tgz.asc
-rw-r--r-- 1 root root      157 Jul  7  2026 apache-auron-8.0.0-incubating-source.tgz.sha512

sha512 对照(两值一致即完整):

cat apache-auron-8.0.0-incubating-source.tgz.sha512 && sha512sum apache-auron-8.0.0-incubating-source.tgz
apache-auron-8.0.0-incubating-source.tgz: d8dc71d5dd41dd8ff2d42c4d5c200b9643514b684fb850d7e054aca8da24c556edbe4205bfbc983d4f723593a353af18b719ed0b6efbd2ec0cd5a0e36684c097
d8dc71d5dd41dd8ff2d42c4d5c200b9643514b684fb850d7e054aca8da24c556edbe4205bfbc983d4f723593a353af18b719ed0b6efbd2ec0cd5a0e36684c097  apache-auron-8.0.0-incubating-source.tgz

gpg 签名验证:

gpg --import KEYS && gpg --verify apache-auron-8.0.0-incubating-source.tgz.asc apache-auron-8.0.0-incubating-source.tgz
gpg:               imported: 4
gpg: Signature made Tue Jul  7 08:49:13 2026 UTC
gpg:                using RSA key 03BDF29842A1E3BE3D4C202BC8748C760193CC20
gpg: Good signature from "Li Zhang (Su128) <richox@apache.org>" [unknown]

4.6 执行完整构建

export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
. $HOME/.cargo/env
cd /root/auron-src/apache-auron-8.0.0-incubating-source
tar xzf apache-auron-8.0.0-incubating-source.tgz
cd apache-auron-8.0.0-incubating-source
./auron-build.sh --release --sparkver 3.5 --scalaver 2.12 --skiptests true --clean true

参数含义与 Ubuntu 22.04 篇 4.7 节一致(--release 激活发布档、--sparkver 3.5 对应 Spark 3.5.8 shim、--scalaver 2.12),此处不重复。实测构建约 25 分钟(12 核,与 Ubuntu 22.04 同规模硬件耗时相当),构建完成后产物:

ls -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar
-rw-r--r-- 1 root root 42206700 Oct 15 08:00 target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar

native 库已在构建中产出并嵌入(native-engine/_build/release/libauron.so 实测 86,926,344 字节,产出时间戳位于构建窗口内)。

4.7 验证构建产物

unzip -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar | grep -E "libauron\.so"
unzip -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar | grep -cE "\.class"
 86926344  06-09-2025 20:48   libauron.so
7467

fat JAR 42,206,700 字节,含 7467 个 class 与 86.9 MB 的 libauron.so(CentOS 8 构建的 .so 体积与 Ubuntu 22.04 构建的 80,822,712 字节不同,属两套工具链的正常差异)。

五、方案 B:轻量构建(跳过 native 引擎,备用)

5.1 适用场景与限制

与 Ubuntu 篇一致:-DskipBuildNative 跳过整个 Rust 环节,产物不含 native 库,只用于 Java 侧编译校验。实测确认的限制:把该产物放进 Spark 后开启 spark.auron.enable 的查询会直接失败——native 执行器包装类初始化时报 NullPointerException,随后 NoClassDefFoundError:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.auron.jni.AuronCallNativeWrapper

不存在自动降级回退,方案 B 产物不能承接生产查询。

5.2 执行轻量构建

-D 属性直接传给源码内置 Maven(不能拼在 auron-build.sh 后,原因见 FAQ Q4):

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
cd /root/auron-src/apache-auron-8.0.0-incubating-source
./build/mvn clean install -DskipTests -DskipBuildNative -Prelease -Pspark-3.5 -Pscala-2.12

实测尾部回显(在做过第四章完整构建的机器上首次执行):

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:32 min
[INFO] Finished at: 2026-10-15T08:47:23Z
[INFO] ------------------------------------------------------------------------

产物核验:

ls -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar
unzip -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar | grep -cE "libauron\.so"
-rw-r--r-- 1 root root 42206700 Oct 15 08:47 target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar
1

注意:首次轻量构建的产物竟然仍是 42,206,700 字节且含有 libauron.so——这正是 5.3 坑二的实测现场(上一轮完整构建的两处残留被合并进产物)。清理后重跑才能得到真正的轻量 JAR,见 5.3。

5.3 两个实测踩坑

坑一:README 示例把 -DskipBuildNative 拼在 auron-build.sh 参数后面,8.0.0-incubating 中实测报错:

[ERROR] Unknown lifecycle phase " -DskipBuildNative". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: pre-clean, clean, post-clean, validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy. -> [Help 1]

解法如 5.2:改用内置 Maven 直调。

坑二:做过完整构建的机器上有两处残留会让轻量构建产物继续带上 libauron.so:

  1. native-engine/_build/release/libauron.so——Rust 侧产物目录不在 Maven 模块清理范围内,构建脚本检测到现成 .so 会直接复用;
  2. $HOME/.m2/repository/org/apache/auron——上一轮 install 进本地仓库的构件被 shade 合并进 fat JAR。

实测清理两处后重跑 5.2 的命令:

rm -rf native-engine/_build $HOME/.m2/repository/org/apache/auron
./build/mvn clean install -DskipTests -DskipBuildNative -Prelease -Pspark-3.5 -Pscala-2.12
[INFO] Total time:  02:18 min
[INFO] Finished at: 2026-10-15T08:54:03Z
ls -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar
unzip -l target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar | grep -cE "libauron\.so"
-rw-r--r-- 1 root root 14350760 Oct 15 08:54 target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar
0

此时产物为 14,350,760 字节、不含 native 库的真轻量 JAR。若要在全新目录一步到位,直接在干净解压目录执行 5.2 命令即可,无需任何清理。

六、方案对比与选择建议

维度方案 A:完整构建方案 B:轻量构建
前置依赖JDK 17 + Rust nightly + gcc/protoc仅 JDK 17
实测耗时约 25 分钟2 分 18 秒(清理残留后)
产物大小42,206,700 字节(含 native)14,350,760 字节(无 native)
可运行查询是,native 加速生效否,开启开关即失败
适用生产部署(官方推荐路径)Java 侧编译校验

建议:生产一律方案 A;方案 B 仅作编译检查。本文采用方案 A 完成后续集成。

七、集成 Spark 与基础配置

7.1 安装 Spark 3.5.8

从 TUNA 镜像下载并校验(期望值取自官方 .sha512 文件):

cd /opt
curl -sO https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.8/spark-3.5.8-bin-hadoop3.tgz
sha512sum spark-3.5.8-bin-hadoop3.tgz
5d5d2e6e111182ee1210d4a46a17ae27107c7ccc70433da0ded3d8197e027f949b00445bb5678ed0c1d5c59f12993d9b9ed12e43686d5aad89a9ec570e93a083  spark-3.5.8-bin-hadoop3.tgz

解压、软链并确认版本(回显实测):

tar xzf spark-3.5.8-bin-hadoop3.tgz && ln -sfn spark-3.5.8-bin-hadoop3 spark
/opt/spark/bin/spark-submit --version 2>&1 | tail -6
Using Scala version 2.12.18, OpenJDK 64-Bit Server VM, 17.0.1

7.2 部署 JAR 与写入配置

cp /root/auron-src/apache-auron-8.0.0-incubating-source/target/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar /opt/spark/jars/

创建 /opt/spark/conf/spark-defaults.conf(内容照抄,官方推荐最小五项):

spark.auron.enable true
spark.sql.extensions org.apache.spark.sql.auron.AuronSparkSessionExtension
spark.shuffle.manager org.apache.spark.sql.execution.auron.shuffle.AuronShuffleManager
spark.memory.offHeap.enabled false
spark.auron.ui.enabled true

写入 /opt/spark/conf/spark-env.sh:

printf "export SPARK_LOCAL_IP=127.0.0.1\nexport JAVA_HOME=/usr/lib/jvm/java-17-openjdk\n" >> /opt/spark/conf/spark-env.sh

⚠️ JVM 堆参数位置说明:本文验证用 --driver-memory 512m(提交命令行传入,等价于 -Xms256m -Xmx256m 一类参数在 Driver 上的生效形态);集群模式改 spark-defaults.conf 的 spark.executor.memory(官方建议 4g)与 spark.executor.memoryOverhead(官方建议 4096,native 内存走堆外记账,详见调优篇)。JAVA_HOME 写进 spark-env.sh 是 CentOS 8 上的必做项——el8 下 Maven/Spark 启动脚本不读 alternatives 的选择,缺省常落到 JDK 8(FAQ Q2 实测)。

八、安装验证(200 万行端到端)

创建 /opt/auron-demo/smoke.sql(内容照抄):

DROP TABLE IF EXISTS demo_order;
CREATE TABLE demo_order USING parquet AS
SELECT id,
       id % 6 AS l_linenumber,
       CAST(id * 1.01 AS DECIMAL(12,2)) AS l_extendedprice,
       CASE WHEN id % 3 = 0 THEN "A" WHEN id % 3 = 1 THEN "B" ELSE "C" END AS l_returnflag
FROM (SELECT explode(sequence(1, 2000000)) AS id);
SELECT l_returnflag, count(*) AS cnt, sum(l_extendedprice) AS total
FROM demo_order GROUP BY l_returnflag ORDER BY l_returnflag;

执行(stderr 单独落文件供取证):

mkdir -p /opt/auron-demo && cd /opt/auron-demo
/opt/spark/bin/spark-sql --driver-memory 512m -f smoke.sql > smoke.out 2> smoke.err
echo rc=$?
rc=0

结果(smoke.out 实测,与 Ubuntu 22.04 环境完全一致):

A       666666  673332996666.33
B       666667  673333670000.00
C       666667  673334343333.67

native 引擎参与证据:

grep -cE "Start executing native plan" smoke.err
8

安装验证通过:退出码 0、三组计数 666666/666667/666667 与 200 万行均分预期一致、native 执行 8 次。

验证点通过标准(实测值)
构建产物fat JAR 42,206,700 字节,含 libauron.so 86,926,344 字节
查询退出码0
结果正确性666666/666667/666667
native 参与Start executing native plan 8 次

九、常见问题(FAQ)

Q1:dnf 全部报 403 或元数据下载失败? CentOS 8 官方源 EOL 后 vault 直连 403(实测现象),按第二章切阿里云归档源即可。注意归档源必须含 8.5.2111 内容集:java-17 包只在该版本线提供(实测 dnf install java-17-openjdk-devel 解析出 17.0.1.0.12-2.el8_5)。

Q2:装了 java-17,Maven/构建却用 JDK 1.8? el8 自带 Maven 3.5.4 的实测输出:

Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Java version: 1.8.0_312, vendor: Red Hat, Inc.

即使 alternatives 已指向其他 JDK,Maven 启动脚本仍落到 java-1.8.0(其 alternatives 优先级 1800312 远高于 java-17 的 1)。解法:所有构建命令显式声明 JAVA_HOME=/usr/lib/jvm/java-17-openjdk,修复后实测:

Java version: 17.0.1, vendor: Oracle Corporation

同一命令还会暴露 locale 问题(Default locale: en_US, platform encoding: ANSI_X3.4-1968),需要中文路径/输出正常时在环境里补 export LANG=C.UTF-8。

Q3:运行时报 GLIBC 版本错误? 把更高 glibc 系统构建的 JAR 拿到 CentOS 8(glibc 2.28)运行的实测报错:

java.lang.UnsatisfiedLinkError: /tmp/libauron-6113756284932247885.tmp: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/libauron-6113756284932247885.tmp)

解法:如第四章在本机(或更低 glibc 系统)构建。同机自建产物加载正常(第八章验证)。

Q4:./auron-build.sh ... -DskipBuildNative 报 Unknown lifecycle phase? 见 5.3 坑一,-D 属性须传给 ./build/mvn。另注意构建脚本 --clean 默认即为 true(--help 实测:Clean before build (default: true)),中断续跑才需要显式 --clean false 并配合 -rf :auron-spark-3.5_2.12 续跑最后模块。

Q5:rustup 安装时提示缺少系统 C 工具链? 实测 warning:

warning: many Rust crates require a system C toolchain, please install one (e.g. via `dnf install gcc` or `apt install gcc`)

按 4.3 先装 gcc 再构建即可;顺序颠倒只影响构建阶段,不影响 rustc 本体。

Q6:重跑验证脚本报表已存在? 实测报错与解法同通用行为:脚本首行保留 DROP TABLE IF EXISTS demo_order;(本文 SQL 已包含),或删除 demo 目录下的 metastore_db 后重跑。

Q7:EXPLAIN 输出里看不到 Native 节点? 设计行为:Auron 在执行准备阶段转换物理计划,EXPLAIN 显示的是转换前计划;以 grep -c "Start executing native plan" smoke.err 的条数为准。

十、卸载与清理

逐条执行(路径即本文实际安装路径):

rm -rf /opt/auron-demo
rm -f /opt/spark/jars/auron-spark-3.5_2.12-release-linux-x86_64-8.0.0-incubating.jar
rm -rf /opt/spark-3.5.8-bin-hadoop3 /opt/spark /opt/spark-3.5.8-bin-hadoop3.tgz
rm -rf /root/auron-src
rm -rf $HOME/.m2/repository/org/apache/auron
rm -rf $HOME/.cargo $HOME/.rustup
dnf remove -y java-17-openjdk-devel gcc gcc-c++ protobuf-compiler make unzip

第 4 条删除源码与构建缓存(约 3 GB);第 5 条清掉 Maven 本地仓库中的 Auron 构件(auron-core、auron-common_2.12、auron-spark-3.5_2.12 等);第 6 条删除 Rust 工具链与缓存(约 700 MB)。JDK 如有其他业务依赖,保留并仅移除 Auron 相关即可。

十一、参考链接

  1. Apache Auron 官方主页:https://auron.apache.org/
  2. 官方 Getting Started:https://auron.apache.org/documents/getting-started.html
  3. ASF 源码下载目录(含 KEYS):https://downloads.apache.org/incubator/auron/
  4. 8.0.0-incubating 发行说明:https://auron.apache.org/archives/v8.0.0-incubating.html
  5. 阿里云 CentOS 归档源:https://mirrors.aliyun.com/centos-vault/
  6. Apache Spark 3.5.8 镜像下载:https://mirrors.tuna.tsinghua.edu.cn/apache/spark/
  7. 官方配置项文档:https://auron.apache.org/documents/configuration.html