Hadoop - /usr/bin/hadoop:第 320 行:/usr/bin/java/bin/java:不是目录

Hadoop - /usr/bin/hadoop:第 320 行:/usr/bin/java/bin/java:不是目录

我在 CentOS 6.4 上安装 Hadoop。
按照以下说明http://hadoop.apache.org/docs/stable/single_node_setup.html

wget http://apache.osuosl.org/hadoop/common/hadoop-1.1.2/hadoop-1.1.2-1.x86_64.rpm
chmod 700 hadoop-1.1.2-1.x86_64.rpm
rpm -Uvh hadoop-1.1.2-1.x86_64.rpm

Java 位于 /usr/bin/java

[root@localhost ~]# /usr/bin/java -version
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (rhel-2.3.4.1.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

设置 JAVA_HOME

vi /etc/hadoop/hadoop-env.sh 


将 export JAVA_HOME=/usr/bin/java/bin/java更改

export JAVA_HOME=/usr/bin/java

[root@localhost ~]# . /etc/hadoop/hadoop-env.sh
[root@localhost ~]# echo $JAVA_HOME
/usr/bin/java

但 Hadoop 仍然失败,因为它的 Java 路径不正确

[root@localhost ~]# /usr/bin/hadoop version
/usr/bin/hadoop: line 320: /usr/bin/java/bin/java: Not a directory

我该如何纠正这个错误信息?

答案1

JAVA HOME只需进行设置/usr,添加bin/java即可带您到达正确的位置。

# export JAVA_HOME="/usr"
# /usr/bin/hadoop version

答案2

JAVA_HOME 必须始终指向 Java 安装的主目录,实际上不建议将其设置为 /usr。此外,如果您的计算机上安装的任何其他应用程序可能依赖于 JAVA_HOME,则它会期望它指向 /usr/java/jdk1.7(fox ex)。

export JAVA_HOME=/usr/java/jdk1.7(您可以在 /etc/hadoop/hadoop-env.sh 中执行此操作)。

此外,将 Hadoop 二进制文件位置的路径(例如 /usr/local/hadoop/bin)添加到 $PATH 后,您只需输入命令,而不必输入命令的完整路径。

答案3

如上所述,通过设置真实的 Java 位置而不是指向它的链接来解决问题,以便找到它:

(将2,3的路径替换为上一个的结果)

$ which java
$ ls -alh /usr/bin/java
$ ls -alh /etc/alternatives/java

现在您可以在 .bashrc 或 .profile 或任何需要的地方进行设置。

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export PATH=$PATH:$JAVA_HOME

相关内容