我已正确设置JAVA_HOME
,当我echo
时,我看到了正确的值:
$ echo $JAVA_HOME
/usr/lib/jvm/java-6-openjdk-amd64/
我还将JAVA_HOME
值添加到 hadoop-env.sh 。
$ grep JAVA_HOME conf/hadoop-env.sh
# The only required environment variable is JAVA_HOME. All others are
# set JAVA_HOME in this file, so that it is correctly defined on
export JAVA_HOME="/usr/lib/jvm/java-6-openjdk-amd64/"
尽管如此,hadoop仍然显示JAVA_HOME
变量完全不同。我不知道它在哪里获得这个价值。有什么建议?
$ hadoop noname -format
Warning: $HADOOP_HOME is deprecated.
/usr/bin/hadoop: line 320: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
/usr/bin/hadoop: line 390: /usr/lib/jvm/java-6-sun/bin/java: No such file or directory
答案 0 :(得分:16)
我的Hadoop安装也遇到了同样的问题。我发现/etc/hadoop/hadoop-env.sh
JAVA_HOME被硬编码为/usr/lib/jvm/java-6-sun
。我继续前进并将其更改为${JAVA_HOME}
,这似乎可以解决问题。
答案 1 :(得分:6)
如果有人遇到同样的问题,请查看是否创建了/ etc / hadoop目录。如果是,请将$JAVA_HOME
中的/etc/hadoop/hadoop-env.sh
变量指向适当的jvm路径。
答案 2 :(得分:3)
我正在"错误 / usr / bin / java / bin / java不存在"
在〜/ .bashrc中,我将JAVA_HOME设置为/usr/bin/java
。我在hadoop/etc/hadoop-config.sh
中看到它正在使用$JAVA_HOME/bin/java
;哪个解释了这个错误。只是,它没有修复它删除/ bin / java。为了找到答案,我通过
cd /usr/bin/java
ls -al
我看到了
lrwxrwxrwx 1 root root 46 Jul 22 16:01 /usr/bin/java -> /etc/alternatives/java
我注意到的最多的是箭头的左侧是Teal,箭头的右侧是绿色,在我的bash提示中。我以为它可能是一个符号链接。我这次再次执行此操作ls -al
<( -al 非常重要)符号链接位置(见下文),并注意到其他符号链接。
root@groovy:~# ls /etc/alternatives/java -al
lrwxrwxrwx 1 root root 46 Jul 22 16:01 /etc/alternatives/java -> /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
我在箭头右侧取 那个 值,并将其放在〜/ .bashrc
中<强>〜/ .bashrc中强>
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
export PATH=$PATH:$JAVA_HOME
<强>的hadoop的/ etc / hadoop的/ hadoop-env.sh 强>
export JAVA_HOME=${JAVA_HOME}
<强>的hadoop /的libexec / hadoop-config.sh 强>
EXPORT JAVA_HOME=$JAVA_HOME/bin
请注意,我通过sudo apt-get install default-jdk
答案 3 :(得分:2)
有两个hadoop-env.sh
个文件:一个位于conf
目录下的hadoop
子目录中,另一个位于/etc/hadoop
下面。您需要更改两者中的$JAVA_HOME
。
答案 4 :(得分:1)
在$ HADOOP_HOME / etc / hadoop / hadoop-env.sh中设置
export JAVA_HOME=/usr/bin
在$ HADOOP_HOME / libexec / hadoop-config.sh中查找并修改JAVA=$JAVA_HOME/bin/java
到
JAVA=$JAVA_HOME/java
答案 5 :(得分:0)
我很确定这不是理想的解决方案。但这就是我所做的:
我在整个/usr/local/hadoop/bin/hadoop
中放置了所有echo语句,以查看JAVA_HOME
何时被设置为静态(似乎是静态的,无论如何)定义的/usr/lib/jvm/java-6-sun
路径。
我可以说很快就会发生这种情况。我不知道为什么会这样。我在/usr/local/jdk1.7.0_17
中安装了java并在我的路径和所有内容中正确设置了JAVA_HOME。有趣的是,我甚至没有安装java 6!
所以这里是hacky部分。我去了预期找到java-6-sun的地方,并为我的java安装设置了一个符号链接
cd /usr/lib/jvm
sudo ln -s /usr/local/jdk1.7.0_17/ java-6-sun
然后一切正常。非常hacky,我知道,但也许这篇文章可以帮助其他人。
答案 6 :(得分:0)
我有同样的问题,但对我来说这是另一个问题。 hadoop脚本期待/opt/hadoop/jdk1.0.7.40作为我的Java主页。但我把它设置为/opt/hadoop/jdk1.0.7_40。下划线产生了不同。现在它正在运作。可能这对某人有帮助 丹
答案 7 :(得分:0)
我找到了一个有趣的解决方案:
如果您echo $JAVA_HOME
,则可能会获得/usr/bin/java
echo export $JAVA_HOME=/usr/ >> conf/hadoop-env.sh
答案 8 :(得分:0)
复杂你的东西...... 我有/usr/lib/java-1.8.0-openjdk_BLABLA 而hadoop想要/usr/lib/java-1.8.0-openjdk_YADIYADA
然后我走了: cp -ar /usr/lib/java-1.8.0-openjdk_BLABLA /usr/lib/java-1.8.0-openjdk_YADIYADA很开心! 没办法搞砸所有这些无意义的混乱......