Hadoop 2.2.0无法运行start-dfs.sh并出现错误:JAVA_HOME未设置且无法找到

时间:2014-02-03 17:30:35

标签: hadoop ssh

我在Ubuntu 12.x中正在进行Hadoop的安装工作。我已经有一个deploy用户,我打算用它来在一组机器上运行hadoop。以下代码基本上可以证明我的问题ssh olympus没有问题,但start-dfs.sh无法完全解决这个问题:

deploy@olympus:~$ ssh olympus
Welcome to Ubuntu 12.04.4 LTS (GNU/Linux 3.5.0-45-generic x86_64)

    * Documentation:  https://help.ubuntu.com/

Last login: Mon Feb  3 18:22:27 2014 from olympus
deploy@olympus:~$ echo $JAVA_HOME
/opt/dev/java/1.7.0_51

deploy@olympus:~$ start-dfs.sh
Starting namenodes on [olympus]
olympus: Error: JAVA_HOME is not set and could not be found.

5 个答案:

答案 0 :(得分:22)

您可以编辑 hadoop-env.sh 文件并为Hadoop设置JAVA_HOME

打开文件,找到下面的行

export JAVA_HOME=/usr/lib/j2sdk1.6-sun

取消注释该行并根据您的环境更新java_home

这将解决java_home的问题。

答案 1 :(得分:11)

在Ubuntu上开箱即用的奇怪错误。当前行

export JAVA_HOME=${JAVA_HOME}
/etc/hadoop/hadoop-env.sh中的

应该从主机中获取java home但不是。

现在只需编辑文件并硬编码java home。

答案 2 :(得分:3)

或者,您可以修改/etc/environment以包含:

JAVA_HOME=/usr/lib/jvm/[YOURJAVADIRECTORY]

这使JAVA_HOME可供系统上的所有用户使用,并允许start-dfs.sh查看该值。我的猜测是,start-dfs.sh正在启动一个流程,因为除非在hadoop-env.sh中明确设置,否则某个地方的某个用户不会获取变量。

使用hadoop-env.sh可以说更清晰 - 只需添加此选项即可完成。

答案 3 :(得分:0)

通过明确设置/etc/hadoop/hadoop-env.sh来编辑Hadoop启动脚本JAVA_PATH

例如: 不是export JAVA_HOME=${JAVA_HOME},而是

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre

这是Java版本java-1.8.0-openjdk。

答案 4 :(得分:0)

我在/opt/hadoop/安装了hadoop,并在/usr/lib/jvm/java-8-oracle安装了java 最后将其添加到bash配置文件中,我解决了任何问题。

export JAVA_HOME=/usr/lib/jvm/java-8-oracle  
export HADOOP_HOME=/opt/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_ROOT_LOGGERi=INFO,console
export HADOOP_SECURITY_LOGGER=INFO,NullAppender
export HDFS_AUDIT_LOGGER=INFO,NullAppender
export HADOOP_INSTALL=$HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_YARN_HOME=$HADOOP_HOME
export YARN_LOG_DIR=/tmp