JAVA_主页未设置

JAVA_主页未设置,java,hadoop,java-home,Java,Hadoop,Java Home,在伪分布式操作中处理Hadoop实现时,我发现JAVA_HOME变量的以下异常未设置,但当我尝试回显它时,它已设置 变量预设在conf/hadoop env.sh(编辑export JAVA_HOME=/usr/lib/jvm/JAVA-6-sun),bash.bashrc vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ echo $JAVA_HOME /usr/lib/jvm/java-6-sun vardan@vardan-HP-G

在伪分布式操作中处理Hadoop实现时,我发现JAVA_HOME变量的以下异常未设置,但当我尝试回显它时,它已设置

变量预设在
conf/hadoop env.sh
(编辑
export JAVA_HOME=/usr/lib/jvm/JAVA-6-sun
),
bash.bashrc

vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ echo $JAVA_HOME
/usr/lib/jvm/java-6-sun
vardan@vardan-HP-G62-Notebook-PC:~/hadoop-0.20.203.0$ bin/start-all.sh
starting namenode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-namenode-vardan-HP-G62-Notebook-PC.out
localhost: starting datanode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-datanode-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set. 
localhost: starting secondarynamenode, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-secondarynamenode-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set. 
starting jobtracker, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-jobtracker-vardan-HP-G62-Notebook-PC.out 
localhost: starting tasktracker, logging to /home/vardan/hadoop-0.20.203.0/bin/../logs/hadoop-vardan-tasktracker-vardan-HP-G62-Notebook-PC.out
localhost: Error: JAVA_HOME is not set.

检查
bin/start all.sh
是否未覆盖
JAVA\u HOME


在执行这些二进制文件之前,可以直接将
echo$JAVA\u HOME
放入脚本中?

使用
set JAVA\u HOME=
设置的JAVA\u HOME变量仅与当前shell相关。假设您在执行
bin/start all.sh
时正在启动一个新的shell,您需要“导出”环境变量以使其在全局范围内可用:

export JAVA_HOME=/usr/lib/jvm/java-6-sun

当您使用控制台登录时,您可以尝试在.bash_配置文件“JAVA_HOME=/usr/lib/jvm/JAVA-6-sun”中写入,无论是在机器上还是使用ssh,都会执行.bash_配置文件。,.bashrc在您执行/bin/bash或其他终端时打开

您也可以尝试将其写入start-all.sh中


确保JAVA_HOME具有正确的路径

我只是添加到了./conf/hadoop-env.sh这一行:

# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/latest
它帮助了


安装Java1.6.x
  • 下载“jdk-6u32-linux-i586.bin”
  • sh jdk-6u32-linux-i586.bin

  • mv/etc/alternations/java/etc/alternations/java_-bak mv/etc/alternations/javac/etc/alternations/javac_-bak

  • 创建链接 ln-s/opt/jdk1.6.0_32/bin/java/etc/alternations/java ln-s/opt/jdk1.6.0_32/bin/javac/etc/alternations/javac

  • 五,。 java版本

    -----------你一定看到了-------------------------------- java版本“1.6.0_32” Java(TM)SE运行时环境(build 1.6.0_32-b05)


    Java HotSpot(TM)客户端虚拟机(构建20.7-b02,混合模式,共享)在UbuntuPrecise+CDH4上存在同样的问题

    长话短说,CDH4使用bigtop,设置JAVA_主页的最简单方法是编辑/etc/default/bigtop utils文件,例如:

    导出JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43/jre/


    注意:在正确安装CDH4之后,我找不到任何hadoop-env.sh文件。

    问题是初始化dfs和mapreduce守护进程的脚本的环境中没有定义JAVA_HOME。

    在执行HDFS和MapReduce时,其执行环境可能是脚本$HADOOP_HOME/conf/HADOOP-env.sh指定的环境。因此,在$HADOOP\u HOME/conf/HADOOP-env.sh中定义JAVA\u HOME就足够了:

    export JAVA_HOME=jdk-home-path
    
    否则,当这还不够时,问题可能是所使用的配置环境(hadoop env.sh)不是我们所期望的;hadoop正在选择另一个或默认值(如果未找到)。最快的解决方案是定义放置hadoop-env.sh脚本的conf目录。设置HADOOP_CONF_DIR环境变量就足够了:

    export HADOOP_CONF_DIR=hadoop-home-path/conf
    

    您可以在
    .bashrc
    文件中添加:

    export JAVA_HOME=$(readlink-f/usr/bin/JAVA | sed“s:bin/JAVA:”)


    当您更新软件包并被Hadoop使用时,它将动态变化。

    也许您需要检查$JAVA\u HOME配置,如下所示:
    1.对于
    hadoop-1.x
    :hadoop home path/conf/hadoop env.sh

    2.对于
    hadoop-2.x
    :hadoop home path/etc/hadoop/hadoop-env.sh

    通常启动脚本会像其他用户一样启动守护进程,因此请确保该用户在.bashrc中也有正确的导出或手动设置java home,如这里的另一个答案所示,放入bin/start-all.sh:
    export JAVA_HOME=/usr/lib/jvm/JAVA-6-sun
    如果问题仍未解决,请在问题中添加
    /conf/hadoop env.sh
    行。还可以添加
    ~/.bashrc
    中的行,其中设置了
    JAVA\u HOME
    的路径。还可以注意到,如果出于某种原因(例如因为使用Maven)已经设置了JAVA\u HOME,那么仍然不能忽略这一点。JAVA_HOME导出仍然需要定义(不仅仅是使用export JAVA_HOME=$JAVA_HOME,而是一个适当的字符串)。在Ubuntu12.04上,使用OpenJDK6(Ubuntu将java二进制文件放在/usr/bin/java中),因此在这个文件中,我取消了java_HOME变量的注释,并将其替换为/usr,start-all.sh工作时没有java_HOME错误谢谢,它对我也有效。Hadoop版本是2.6.0。