Hadoop:未设置JAVA_HOME

时间:2012-05-30 21:22:45

标签: hadoop java-home appletviewer

与世界上其他人一样,我正在关注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未设置”。我的想法很少。有人看到我错过的任何东西吗?

3 个答案:

答案 0 :(得分:1)

谢谢@Chris Shain和@Chris White的提示。我正在运行hadoop作为su,并且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。

答案 1 :(得分:0)

首先要注意:如果您正在使用CYGWIN,请以管理员身份登录系统。

我遇到了执行namenode -format时找不到Java_Home的问题。以下是我修复它的方法

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

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

  3. 搜索java_home变量

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

  5. 导出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安装路径。不需要驱动器号后冒号,路径应该有正斜杠。

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

    运行该程序,它现在可以正常工作。

      

    块引用

答案 2 :(得分:0)

尝试使用短名称以避免路径中的空格。

“C:\ Program Files”应该有短名称C:\ Progra~1(您可以使用DOS dir命令验证它或将其输入到文件浏览器的地址栏中。)

以这种方式设置你的JAVA_HOME:

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

由user2540312回答