我正在尝试在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
变量设置不正确吗?
确保您已删除评论标记并更改了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
来激活新的更改。
您应该在JAVA_HOME
文件中设置hadoop-env.sh
,该文件也位于Hadoop配置目录中。默认情况下,JAVA_HOME
设置行被注释。
在您的终端输入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 >
。
您可以添加.bashrc
文件:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
它会在您更新包时动态更改。
将此export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
复制到hadoop-env.sh
文件。
JAVA_HOME
是java二进制文件所在的位置。
对我有用的解决方案是在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
我尝试了上述解决方案,但以下工作对我有用
export JAVA_HOME=/usr/java/default
我在我的环境中解决了这个问题,没有修改hadoop-env.sh
你最好使用/bin/bash
作为默认shell而不是/bin/sh
检查这些之前:
echo $JAVA_HOME
)echo $SHELL
在每个节点,检查是否打印/bin/bash
,如果没有,vi /etc/passwd
,在用户名ref的尾部添加/bin/bash
上面的错误是因为两个单词之间的空格。
例如:位于C:\ Program Files \ Java中的Java - >程序和文件之间的空格会导致上述问题。如果删除空格,则不会显示任何错误。