hadoop从何处获取java\u home变量值?

8e2ybdfx  于 2021-06-04  发布在  Hadoop
关注(0)|答案(9)|浏览(366)

我已经准备好了 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
vqlkdk9b

vqlkdk9b1#

在$hadoop\u home/etc/hadoop/hadoop-env.sh集合中

export JAVA_HOME=/usr/bin

在$hadoop\u home/libexec/hadoop-config.sh中查找并修改 JAVA=$JAVA_HOME/bin/java

JAVA=$JAVA_HOME/java
e5nqia27

e5nqia272#

我遇到了“error/usr/bin/java/bin/java不存在”
在~/.bashrc中,我把javau home设置为 /usr/bin/java . 我看见他进来了 hadoop/etc/hadoop-config.sh 它使用的 $JAVA_HOME/bin/java ; 这就解释了那个错误。只是,它没有将其修复为remove/bin/java。为了找到答案,我通过

cd /usr/bin/java
ls -al

我看到了

lrwxrwxrwx 1 root root 46 Jul 22 16:01 /usr/bin/java -> /etc/alternatives/java

在我的bash提示中,我注意到最多的是箭头的左边是青色的,右边是绿色的。我想可能是个符号链接。这次我又做了一次 ls -al “ing(the-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

注意,我安装jdk是从via开始的 sudo apt-get install default-jdk

uxh89sit

uxh89sit3#

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

jmp7cifd

jmp7cifd4#

我也有同样的问题,但对我来说是不同的问题。hadoop脚本期望/opt/hadoop/jdk1.0.7.40作为我的java主页。但我将其设置为/opt/hadoop/jdk1.0.7_。下划线起了作用。现在它正在工作。也许这对丹有帮助

n1bvdmb6

n1bvdmb65#

我找到了一个有趣的解决办法:
如果你 echo $JAVA_HOME ,你可能会
/usr/bin/java echo export $JAVA_HOME=/usr/ >> conf/hadoop-env.sh

ht4b089n

ht4b089n6#

把你的东西弄复杂了伙计们。。。。我有/usr/lib/java-1.8.0-openjdk\u blabla,而hadoop需要/usr/lib/java-1.8.0-openjdk\u yadiyada
然后我开始:cp-ar/usr/lib/java-1.8.0-openjdk\u blabla/usr/lib/java-1.8.0-openjdk\u yadiyada
而且很开心!不可能搞砸这些无意义的会议。。。

zte4gxcn

zte4gxcn7#

我在hadoop安装中也遇到了同样的问题。我发现在 /etc/hadoop/hadoop-env.sh javau home被硬编码为 /usr/lib/jvm/java-6-sun . 我把它改成了 ${JAVA_HOME} 这似乎起到了作用。

arknldoa

arknldoa8#

我敢肯定这不是理想的解决办法。但我就是这么做的:
我到处都是回音 /usr/local/hadoop/bin/hadoop 看看什么时候 JAVA_HOME 设置为的静态(似乎是静态的)定义路径 /usr/lib/jvm/java-6-sun .
我可以说这种事很快就会发生。我不知道为什么会这样。我在中安装了java /usr/local/jdk1.7.0_17 在我的道路上正确地设置了javau家。有趣的是,我甚至没有安装Java6!
所以这里是令人讨厌的部分。我去了它希望找到java-6-sun的地方,并设置了一个指向我的java安装的符号链接

cd /usr/lib/jvm
sudo ln -s /usr/local/jdk1.7.0_17/ java-6-sun

然后一切都成功了。我知道这是一篇非常刻薄的文章,但也许这篇文章可以帮助其他人。

7gyucuyw

7gyucuyw9#

有两个 hadoop-env.sh 文件:一个在 conf 子目录 hadoop 目录下的一个 /etc/hadoop . 你需要改变 $JAVA_HOME 两者都有。

相关问题