由于需要安装python3,所以执行了一次yum update, 然后发现我的hadoop集群+hive+spark都运行不了任务, 查看日志发现提醒我
ERROR: JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64 does not exist.
然后前往/usr/lib/jvm/目录下面, 发现jdk被更新成java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64版本了, 简直了, 之前没注意, 现在要赶紧补救. 我决定就使用这个更新之后的jdk版本.
一. 将java_home都修改了
先把spark、hive以及hadoop全部停止, 修改spark配置目录下面的spark-env.sh文件、hive配置目录下面的hive-env.sh文件、hadoop配置目录下面的hadoop-env.sh文件和/etc/profile文件。将所有的JAVA_HOME都修改成更新之后的版本
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64
其中 /etc/profile修改完成之后, 需要保存退出之后执行
source /etc/profile
并将所有修改之后的配置文件分配到其他节点
重启所有组件
二.解决这个问题的根本手段
出现这个问题主要原因是yum update会导致Java OpenJDK更新
如果你不希望Java OpenJDK被更新,你可以使用yum hold命令锁定Java OpenJDK的版本,以防止它被更新,具体步骤如下:
-
首先,使用以下命令列出已安装的Java OpenJDK软件包:
rpm -qa | grep java-1.8.0-openjdk
-
使用以下命令将Java OpenJDK软件包版本锁定:
sudo yum versionlock java-1.8.0-openjdk-<version>
(请将
<version>
替换为已安装的Java OpenJDK软件包的版本号) -
确认Java OpenJDK软件包版本已被锁定,使用以下命令来验证命令是否成功执行:
yum versionlock list | grep java-1.8.0-openjdk
它将显示你所锁定的Java OpenJDK软件包的版本号。
现在,即使你执行yum update
,也不会更新Java OpenJDK软件包。如果你需要更新Java OpenJDK软件包,可以先删除锁定,然后再更新它。使用以下命令删除锁定:
sudo yum versionlock delete java-1.8.0-openjdk