我正在尝试在Ubuntu 11.10上安装Hadoop。我将文件JAVA_HOME
中的conf/hadoop-env.sh
变量设置为:
# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
然后我执行这些命令(独立操作):
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
$ cat output/*
但执行第三个命令时出现以下错误:
错误:未设置JAVA_HOME
JAVA_HOME
变量未正确设置吗?
答案 0 :(得分:50)
确保您已移除评论标记,并更改了JAVA_HOME
中的hadoop-env.sh
以及相应的.bashrc
和/或.profile
:
# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
应该是
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
您可以在JAVA_HOME
中为所有用户设置PATH
和/etc/profile
(确保您之前没有将此设置为错误的路径)。
另外,不要忘记通过注销/执行或执行source /etc/profile
来激活新的更改。
答案 1 :(得分:30)
您应该在Hadoop配置目录中的JAVA_HOME
文件中设置hadoop-env.sh
。
默认情况下,JAVA_HOME
设置行已注释。
答案 2 :(得分:12)
在终端中输入echo $JAVA_HOME
以确保JAVA_HOME
已设置。
您也可以输入java -version
来了解您实际使用的java版本。
顺便说一句,阅读你的描述似乎是你的实际写作
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
在文件conf/hadoop-env.sh
中,您应该在终端或~/.bashrc
或~/.profile
中写入,然后输入source < path to modified file >
。
答案 3 :(得分:6)
您可以添加.bashrc
文件:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
,当您更新软件包时,它会动态更改。
答案 4 :(得分:1)
将此export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
复制到hadoop-env.sh
文件。
JAVA_HOME
是存在java二进制文件的位置。
答案 5 :(得分:1)
最适合我的解决方案是将JAVA_HOME
设置为/etc/environment
尽管可以在/ etc / profile文件中设置JAVA_HOME
,但是JAVA_HOME
或任何系统变量的首选位置是/etc/environment
。
在任何文本编辑器(例如nano或vim)中打开/ etc / environment并添加以下行:
JAVA_HOME="/usr/lib/jvm/your_java_directory"
加载变量:
source /etc/environment
检查变量是否正确加载:
echo $JAVA_HOME
答案 6 :(得分:1)
我尝试更改/etc/environment
:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
在从属节点上,它起作用。
答案 7 :(得分:0)
我尝试了上述解决方案,但以下内容对我有用
export JAVA_HOME=/usr/java/default
答案 8 :(得分:0)
在某些发行版(CentOS / OpenSuSe,...)中,只有在/ etc / environment中设置JAVA_HOME才能起作用。
答案 9 :(得分:0)
在这里,我们提供了在安装Hadoop时设置JAVA_HOME的简单步骤
第一步:转到Java库路径/ lib jvm
然后在.bashrc文件中设置JAVA_HOME和PATH
第2步:完成后,请使用Hadoop env文件,然后对其进行更新。
完成后,请停止守护程序并再次启动守护程序。
答案 10 :(得分:-1)
我在环境中解决了此问题,无需修改hadoop-env.sh
最好使用/bin/bash
作为默认外壳而不是/bin/sh
请先检查以下内容:
echo $JAVA_HOME
) echo $SHELL
在每个节点中,检查是否打印/bin/bash
如果不是vi /etc/passwd
,请在用户名的末尾添加/bin/bash
ref
答案 11 :(得分:-8)
以上错误是因为两个单词之间的空格。
例如:Java位于 C:\ Program Files \ Java - &gt; 程序和文件之间的空格会导致上述问题。如果删除空格,则不会显示任何错误。