JAVA_主页未设置
在伪分布式操作中处理Hadoop实现时,我发现JAVA_HOME变量的以下异常未设置,但当我尝试回显它时,它已设置 变量预设在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
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
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.sh2.对于
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。