有多个 Java 版本时为 Hadoop 3.0.3 配置 JAVA HOME

有多个 Java 版本时为 Hadoop 3.0.3 配置 JAVA HOME

我正在研究其他人完成的 Hadoop 安装。

Ubuntu 18.04.1 LTS
Hadoop version 3.0.3
Java open jdk 11 (auto mode) and 8 (manual mode)

目前 Hadoop 使用 Java 11 运行,但我想将 Hadoop 配置为使用 Java 8 运行,因为Hive 不适用于 Java 11

以下是我的虚拟机中的 Java 配置。

hadoop@hadoop-VirtualBox:~$ whereis java
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz

hadoop@hadoop-VirtualBox:~$ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

hadoop@hadoop-VirtualBox:~$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.1, mixed mode)

hadoop@hadoop-VirtualBox:~$ sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode


hadoop@hadoop-VirtualBox:~$ ls -lh /usr/lib/jvm/
total 8.0K
lrwxrwxrwx 1 root root   25 Apr  8 14:16 default-java -> java-1.11.0-openjdk-amd64
lrwxrwxrwx 1 root root   21 Apr 21 14:41 java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64
drwxr-xr-x 9 root root 4.0K Aug 23 12:28 java-11-openjdk-amd64
lrwxrwxrwx 1 root root   20 Apr 26 16:59 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64
drwxr-xr-x 7 root root 4.0K Aug 17 08:24 java-8-openjdk-amd64

我当时正在看此主题但是在 .bashrc 或 /etc/environment 文件中没有关于 JAVA_HOME 的条目。唯一指定 JAVA_HOME 的地方是在 /usr/local/hadoop/etc/hadoop/hadoop-env.sh 文件中。在文件中 JAVA_HOME 的指定如下:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

使用上述配置,Hadoop 运行没有任何问题。我尝试将 hadoop-env.sh 文件中的 JAVA_HOME 更改为 /usr/lib/jvm/java-8-openjdk-amd64,并尝试运行 Hadoop。但这会出现错误

Unrecognized option: --add-modules Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.

我尝试使用以下方法更改 Java 版本的优先级sudo 更新替代方案 --config java以及 hadoop-env.sh 的改变但仍然出现相同的错误。

为了更改 Java 版本,我是否也需要将路径添加到 .bashrc 和 /etc/environment?我想知道需要进行哪些更改。

答案1

首先确保您有一个已经验证的备份。

很多Hadoop生态圈只支持Java 8,Scala,Spark等等,但是在安装Hadoop的时候需要先设置JAVA_HOME。

在安装 Java 8 之前,您需要卸载 Java 11。对于 Hadoop 系统,最好收到一条错误消息来帮助识别问题所在,然后运行不同的 JVM(Java 11 和 Java 8)。注意:我假设 Hadoop 在系统启动时自动运行,因此您肯定需要删除 Java 11。

然后,您需要检查每个 Hadoop 配置文件,以再次检查 JAVA_HOME 是否已配置。对于 Ubuntu,这通常是配置,/usr/local/hadoop/etc/hadoop但可以是前任管理员想要的任何配置($HADOOP_HOME/etc/hadoop)。然后直接使用 grep 来加快速度。这适用于每个附加产品,例如 Hive、HBase 等。您可能很幸运,因为只有 hadoop-env.sh 配置了 JAVA_HOME。

还请检查 /etc/init.d 中的 init 启动脚本

重启 Hadoop 后,查看日志文件。我还会逐个关闭并重启每个服务,然后查看输出。

相关内容