【问题标题】:Hadoop: JAVA_HOME is not setHadoop:未设置 JAVA_HOME
【发布时间】:2012-05-30 21:22:45
【问题描述】:

和世界上的其他人一样,我关注this hadoop tutorial。我到了我格式化 HDFS 的地步,我得到了这个:

user@linux01:~$ sudo $HADOOP_INSTALL/bin/hadoop namenode -format
Error: JAVA_HOME is not set.

这很有趣,我在 /etc/profiles 中设置了 JAVA_HOME。

user@linux01:~$ tail -n 4 /etc/profile
export JAVA_HOME=/usr/local/jdk1.6.0_32/bin
export JDK_HOME=$JAVA_HOME
export PATH=$PATH:/usr/local/jdk1.6.0_32/bin
export HADOOP_INSTALL=/usr/local/hadoop/hadoop-1.0.3

我是不是搞砸了?

user@linux01:~$ echo $JAVA_HOME
/usr/local/jdk1.6.0_32/bin
user@linux01:~$ ls $JAVA_HOME
appletviewer  extcheck       jar        javac    and so forth...

似乎有效。也许它绝对必须在我的hadoop-env.sh中设置?

# The java implementation to use.  Required.
export JAVA_HOME=$JAVA_HOME

懒惰,是的,但不管有没有这个评论,我仍然得到“JAVA_HOME is not set”。我的想法不多了。有人看到我遗漏的任何东西吗?

【问题讨论】:

  • 你为什么以 su 的身份运行 hadoop?尝试自己运行它
  • 好点,所有。我以我的 hadoop 用户身份运行它,而且我更进一步。有人回答这个问题,这样我就可以在到期时给予信用。

标签: hadoop java-home appletviewer


【解决方案1】:

感谢@Chris Shain 和@Chris White 的提示。我以 su 的身份运行 hadoop,而 su 不会自动知道我设置的环境变量。我以我的 hadoop 用户身份登录(我已将 hadoop 安装目录分配给该用户),并且能够格式化 hdfs。

次要问题:当我尝试启动 Hadoop 时,NameNode 和 JobTracker 启动成功,但 DataNode、SecondaryNameNode 和 TaskTracker 启动失败。我挖了一点。 NameNode 和 JobTracker 是通过 hadoop-daemon.sh 启动的,而 DataNode、SecondaryNameNode 和 TaskTracker 是通过 hadoop-daemon*s*.sh 启动的。这里的解决方法是在 conf/hadoop-env.sh 中正确设置 JAVA_HOME。

【讨论】:

    【解决方案2】:

    首先一般注意事项:如果您正在使用 CYGWIN,请以管理员身份登录到您的系统。

    我在执行 namenode -format 时遇到了 Java_Home 未找到的问题。以下是我所做的修复它

    1. 在文件夹名称中没有空格的位置从程序文件中重新安装了 JDK。例如:D:/Installations/JDK7

    2. 进入hadoop(1.2.1版)安装的bin文件夹,编辑“hadoop”配置文件。这是没有文件扩展名的文件。

    3. 搜索 java_home 变量

    4. 就在变量 $JAVA_HOME 的第一个实例之前,我添加了这一行:

    导出 JAVA_HOME=/cygdrive/D/Installations/JDK7/

    这就是现在的样子:

    fi
    
    export JAVA_HOME=/cygdrive/D/Installations/JDK7/
    
    # some Java parameters
    if [ "$JAVA_HOME" != "" ]; then
      #echo "run java in $JAVA_HOME"
      JAVA_HOME=$JAVA_HOME
    fi
    

    注意:/cygdrive/ 必须在您的 jdk 安装路径之前。不需要驱动器号后的冒号,路径应该有正斜杠。

    另外,我确实在系统环境属性中设置了 JAVA_HOME。只是为了确定。

    运行程序,它现在就可以工作了。

    块引用

    【讨论】:

      【解决方案3】:

      尽量使用短名称以避免路径中出现空格。

      "C:\Program Files" 应该有短名称 C:\Progra~1(您可以使用 DOS dir 命令或在文件资源管理器的地址栏中输入它来验证它)。

      这样设置你的 JAVA_HOME:

      导出 JAVA_HOME="/cygdrive/c/Progra~1/Java/jdk1.7.0_10"

      用户2540312回答

      【讨论】:

        猜你喜欢
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 2017-02-11
        • 1970-01-01
        相关资源
        最近更新 更多