JAVA_HOME没有设置

时间:2012-02-08 11:55:43

标签: 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-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.

9 个答案:

答案 0 :(得分:4)

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

# The java implementation to use.  Required.
export JAVA_HOME=/usr/java/latest

并帮助

答案 1 :(得分:3)

检查bin/start-all.sh是否未覆盖JAVA_HOME

在执行这些二进制文件之前,可能直接将echo $JAVA_HOME放在该脚本中?

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)


安装java 1.6.x

  1. 下载“jdk-6u32-linux-i586.bin”
  2. sh jdk-6u32-linux-i586.bin

  3. mv / etc / alternatives / java / etc / alternatives / java_bak mv / etc / alternatives / javac / etc / alternatives / javac_bak

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

  5. 5。   java -version

    -----------你必须看到这个-------------------------------- java版“1.6.0_32” Java(TM)SE运行时环境(版本1.6.0_32-b05)

    Java HotSpot(TM)客户端VM(内置20.7-b02,混合模式,共享)

答案 4 :(得分:0)

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

您也可以尝试在start-all.sh

中编写它

确保JAVA_HOME具有正确的路径

答案 5 :(得分:0)

Ubuntu Precise + CDH4上的问题......

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

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

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

答案 6 :(得分:0)

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

可以肯定的是,在执行HDFS和MapReduce时,其执行环境是脚本$ HADOOP_HOME / conf / hadoop-env.sh指定的环境。因此,在$ HADOOP_HOME / conf / hadoop-env.sh中定义JAVA_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

答案 7 :(得分:0)

您可以添加.bashrc文件:

  

export JAVA_HOME = $(readlink -f / usr / bin / java | sed" s:bin / java ::")

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

答案 8 :(得分:0)

也许您需要检查$ JAVA_HOME配置如下:
1. for hadoop-1.x:hadoop-home-path / conf / hadoop-env.sh
2. for hadoop-2.x:hadoop-home-path / etc / hadoop / hadoop-env.sh