我在 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