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

下载并校验 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
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

::: tip 校验包完整性
下载页、内部制品库或交付包清单里通常会提供 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
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

如果你的环境不能访问公网,可以把 JDK 压缩包提前放到核心节点 /data/modules,再从工作节点拉到本机:

sudo rsync -avP hadoop1.test.com:/data/modules/*jdk*.tar.gz /opt/modules/
cd /opt/modules
sha256sum *jdk*.tar.gz

离线环境更要保留包清单,把文件名、版本、架构和 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

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

JDK 双环境目录

写入默认 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

这样后续组件默认拿到的是 JDK8,而 Ambari Server setup 时可以显式指定 JDK17。

验证版本

所有节点执行:

source /etc/profile.d/java.sh
java -version
/usr/jdk64/jdk17/bin/java -version
echo $JAVA_HOME

JDK 版本验证

通过标准:

检查项 期望
java -version 输出 JDK8
/usr/jdk64/jdk17/bin/java -version 输出 JDK17
echo $JAVA_HOME /usr/jdk64/jdk1.8
ls -l /usr/jdk64 能看到 jdk1.8jdk17

常见问题

现象 原因 处理
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 驱动和本地仓库配置。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐