Step6—JDK 双环境准备
# Step6—JDK 双环境准备
Ambari Plus 这里建议准备两套 JDK:JDK8 给 Stack 和大数据组件使用,JDK17 给 Ambari Server 自身使用。不要只装一个 JDK 就继续往下做,否则后面 Ambari Server setup 或组件启动时很容易出现版本不匹配。
所有节点都要做 JDK8 和 JDK17。核心节点会用到两套,工作节点后续安装组件时也会用到默认 JDK8。
# 版本建议
| 架构 | JDK8 | JDK17 | 说明 |
|---|---|---|---|
aarch64 | BiSheng JDK 8u472 | BiSheng JDK 17.0.17 | 适合 Kylin/openEuler/ARM 环境 |
x86_64 | Temurin 8 LTS 或已验证 JDK8 | Temurin 17 LTS 或已验证 JDK17 | 适合 Rocky/RHEL/Ubuntu x86 |
先确认架构:
uname -m
如果三台机器架构不一致,不建议继续使用同一套安装包。
# 准备下载目录
所有节点执行:
sudo mkdir -p /opt/modules /usr/jdk64
sudo chown -R root:root /opt/modules /usr/jdk64
2
# 下载并校验 JDK8
cd /opt/modules
sudo curl -fL -o bisheng-jdk-8u472-b11-linux-aarch64.tar.gz \
https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-8u472-b11-linux-aarch64.tar.gz
sha256sum bisheng-jdk-8u472-b11-linux-aarch64.tar.gz
sudo tar -zxf bisheng-jdk-8u472-b11-linux-aarch64.tar.gz -C /opt/modules
2
3
4
5
6
7
cd /opt/modules
sudo curl -fL -o temurin-jdk8-linux-x64.tar.gz \
'https://api.adoptium.net/v3/binary/latest/8/ga/linux/x64/jdk/hotspot/normal/eclipse'
sha256sum temurin-jdk8-linux-x64.tar.gz
sudo tar -zxf temurin-jdk8-linux-x64.tar.gz -C /opt/modules
2
3
4
5
6
7
// Make sure to add code blocks to your code group
校验包完整性
下载页、内部制品库或交付包清单里通常会提供 SHA256。这里不要只看文件大小,至少用 sha256sum 和清单对一次,尤其是离线包经过多人传递时。
# 下载并校验 JDK17
cd /opt/modules
sudo curl -fL -o bisheng-jdk-17.0.17-b11-linux-aarch64.tar.gz \
https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-17.0.17-b11-linux-aarch64.tar.gz
sha256sum bisheng-jdk-17.0.17-b11-linux-aarch64.tar.gz
sudo tar -zxf bisheng-jdk-17.0.17-b11-linux-aarch64.tar.gz -C /opt/modules
2
3
4
5
6
7
cd /opt/modules
sudo curl -fL -o temurin-jdk17-linux-x64.tar.gz \
'https://api.adoptium.net/v3/binary/latest/17/ga/linux/x64/jdk/hotspot/normal/eclipse'
sha256sum temurin-jdk17-linux-x64.tar.gz
sudo tar -zxf temurin-jdk17-linux-x64.tar.gz -C /opt/modules
2
3
4
5
6
7
// Make sure to add code blocks to your code group
如果你的环境不能访问公网,可以把 JDK 压缩包提前放到核心节点 /data/modules,再从工作节点拉到本机:
sudo rsync -avP hadoop1.test.com:/data/modules/*jdk*.tar.gz /opt/modules/
cd /opt/modules
sha256sum *jdk*.tar.gz
2
3
离线环境更要保留包清单,把文件名、版本、架构和 SHA256 写清楚。后面排查 Java 版本问题时,这张清单会很有用。
# 固定软链接
根据实际解压目录创建软链接。/usr/jdk64 不是 Ubuntu 或 RHEL 的系统默认目录,而是 Ambari 和不少大数据组件常用的约定目录;我这里统一放到这个目录,是为了后面 ambari-plus setup、Stack JDK 和组件配置都能写固定路径。
下面以 aarch64 BiSheng JDK 为例:
sudo ln -sfn /opt/modules/bisheng-jdk1.8.0_472 /usr/jdk64/jdk1.8
sudo ln -sfn /opt/modules/bisheng-jdk-17.0.17 /usr/jdk64/jdk17
2
x86_64 环境根据实际解压目录替换,目录名可以先用 ls /opt/modules 看一眼:
JDK8_DIR=$(find /opt/modules -maxdepth 1 -type d \( -name 'jdk8u*' -o -name 'jdk1.8*' \) | head -n 1)
JDK17_DIR=$(find /opt/modules -maxdepth 1 -type d \( -name 'jdk-17*' -o -name 'jdk17*' \) | head -n 1)
test -n "$JDK8_DIR" && test -n "$JDK17_DIR"
sudo ln -sfn "$JDK8_DIR" /usr/jdk64/jdk1.8
sudo ln -sfn "$JDK17_DIR" /usr/jdk64/jdk17
2
3
4
5
6
7

# 写入默认 JAVA_HOME
默认 JAVA_HOME 指向 JDK8:
sudo tee /etc/profile.d/java.sh >/dev/null <<'EOF'
export JAVA_HOME=/usr/jdk64/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
EOF
source /etc/profile.d/java.sh
2
3
4
5
6
这样后续组件默认拿到的是 JDK8,而 Ambari Server setup 时可以显式指定 JDK17。
# 验证版本
所有节点执行:
source /etc/profile.d/java.sh
java -version
/usr/jdk64/jdk17/bin/java -version
echo $JAVA_HOME
2
3
4

通过标准:
| 检查项 | 期望 |
|---|---|
java -version | 输出 JDK8 |
/usr/jdk64/jdk17/bin/java -version | 输出 JDK17 |
echo $JAVA_HOME | /usr/jdk64/jdk1.8 |
ls -l /usr/jdk64 | 能看到 jdk1.8 和 jdk17 |
# 常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
java -version 仍是系统自带版本 | /etc/profile.d/java.sh 未生效 | 重新 source 或重新登录 |
| 软链接指向不存在目录 | 解压目录名称和示例不一致 | 用 ls /opt/modules 找真实目录 |
| JDK17 能用但 JDK8 不行 | JDK8 下载包错误 | 按架构重新下载 |
| Ambari setup 找不到 Java | 没有使用绝对路径 | 使用 /usr/jdk64/jdk17 和 /usr/jdk64/jdk1.8 |
JDK 双环境通过以后,再进入 MySQL 驱动和本地仓库配置。