hadoop从哪里获得JAVA_HOME变量值?

Ali*_*lov 10 hadoop

我已经设置JAVA_HOME正确,当我echo它,我看到正确的值:

$ echo $JAVA_HOME
/usr/lib/jvm/java-6-openjdk-amd64/
Run Code Online (Sandbox Code Playgroud)

我还把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/"
Run Code Online (Sandbox Code Playgroud)

尽管如此,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
Run Code Online (Sandbox Code Playgroud)

小智 16

我的Hadoop安装也遇到了同样的问题.我发现/etc/hadoop/hadoop-env.shJAVA_HOME是硬编码的/usr/lib/jvm/java-6-sun.我继续前进并将其更改为${JAVA_HOME},这似乎可以解决问题.


小智 6

如果有人遇到同样的问题,请查看是否创建了/ etc/hadoop目录.如果是,则将$JAVA_HOME变量/etc/hadoop/hadoop-env.sh指向适当的jvm路径.


J-D*_*zle 6

我有“错误/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
Run Code Online (Sandbox Code Playgroud)

我看到了

lrwxrwxrwx 1 root root 46 Jul 22 16:01 /usr/bin/java -> /etc/alternatives/java
Run Code Online (Sandbox Code Playgroud)

我最注意到的是,在我的 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
Run Code Online (Sandbox Code Playgroud)

我把箭头右边的那个值放在 ~/.bashrc 中


最终配置

~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre
export PATH=$PATH:$JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

hadoop/etc/hadoop/hadoop-env.sh

export JAVA_HOME=${JAVA_HOME}
Run Code Online (Sandbox Code Playgroud)

hadoop/libexec/hadoop-config.sh

EXPORT JAVA_HOME=$JAVA_HOME/bin
Run Code Online (Sandbox Code Playgroud)

请注意,我通过以下方式安装了 JDK sudo apt-get install default-jdk