使用hadoop:localhost:error:java\u home未设置

wfsdck30  于 2021-06-04  发布在  Hadoop
关注(0)|答案(11)|浏览(442)

我正在使用Ubuntu12.04 lts。
我正在阅读hadoop快速入门手册来进行一个伪分布式操作。它看起来简单而直截了当。
但是,当我试着跑的时候 start-all.sh 我得到:

localhost: Error: JAVA_HOME is not set.

我已经阅读了关于这个问题的stackoverflow的所有其他建议,并做了以下工作来确保 JAVA_HOME 设置为:
/etc/hadoop/conf/hadoop-env.sh 我已经准备好了

JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME

/etc/bash.bashrc 我已经准备好了

JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
``` `which java` 退货:

/usr/bin/java
``` java –version 作品 echo $JAVA_HOME 退货:

/usr/lib/jvm/java-6-oracle

我甚至尝试过成为root并在终端中显式地编写:

$ JAVA_HOME=/usr/lib/jvm/java-6-oracle
$ export JAVA_HOME
$ start-all.sh

如果您能告诉我如何解决这个错误,我们将不胜感激。我在想我的 JAVA_HOME 不知怎么被推翻了。如果是这样的话,你能向我解释一下如何使我的出口产品全球化吗?

am46iovg

am46iovg1#

调试的方法是在start-all.sh中放置一个“echo$java\u home”。您是以不同的用户名运行hadoop环境,还是以自己的身份运行hadoop环境?如果是前者,很可能没有为该用户设置javahome环境变量。
另一个潜在的问题是您错误地指定了javahome,并且您提供的值没有指向jdk/jre。请注意,“which java”和“java-version”都可以工作,即使javahome设置不正确。

ego6inou

ego6inou2#

echo "export JAVA_HOME=/usr/lib/java" >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh

注意:请勿使用 export JAVA_HOME=${JAVA_HOME} !

nue99wik

nue99wik3#

这个错误来自第180行

if [[ -z $JAVA_HOME ]]; then
   echo "Error: JAVA_HOME is not set and could not be found." 1>&2
   exit 1
fi

libexec/hadoop-config.sh .
试试回声 $JAVA_HOME 在剧本里。如果它认不出来,
找到你的 JAVA_HOME 使用此项: $(readlink -f /usr/bin/javac | sed "s:/bin/javac::") 更换管路 export JAVA_HOME=${JAVA_HOME}/etc/hadoop/hadoop-env.sh 有了javau home,你就得到了上面的命令。

disbfnqx

disbfnqx4#

在ubuntu lts 16.04上遇到了同样的问题。跑步 bash -vx ./bin/hadoop 它测试了java是否是一个目录。所以我把javau home改成了一个文件夹,就成功了。

++ [[ ! -d /usr/bin/java ]]
++ hadoop_error 'ERROR: JAVA_HOME /usr/bin/java does not exist.'
++ echo 'ERROR: JAVA_HOME /usr/bin/java does not exist.'
ERROR: JAVA_HOME /usr/bin/java does not exist.

所以我在家里换了 java ./etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/

hadoop的开始很好。本文也提到了这一点。

l2osamch

l2osamch5#

我使用的是hadoop1.1,面临着同样的问题。
我通过改变解决了 JAVA_HOME 变量输入 /etc/hadoop/hadoop-env.sh 作为:

export JAVA_HOME=/usr/lib/jvm/<jdk folder>
oalqel3c

oalqel3c6#

不管是debian还是任何linux风格,只要知道 ~/.bash_profile 属于特定用户并且不是系统范围的。在伪分布式环境中,hadoop在 localhost 所以 $JAVA_HOME 在。bashèu配置文件已经没有用了。
只需将javau导出到 ~/.bashrc 并在整个系统范围内使用它。

gojuced7

gojuced77#

解决这个问题的方法是导出conf/hadoop-env.sh文件中的javahome变量。
不管您是否已经在~/.bashrc中导出了该变量,它仍然会显示错误。
因此,editconf/hadoop-env.sh并取消对“export java\u home”行的注解,并为其添加一个适当的文件系统路径,即指向javajdk的路径。

要使用的java实现。必修的。

export java_home=“/path/to/java/jdk/”

new9mtju

new9mtju8#

检查您的备选方案是否指向正确的版本,您可能实际指向不同的版本,并试图在另一个已安装的版本上更改hadoop-env.sh。
-备选方案——安装/etc/hadoop/conf[generic\u name][your correct path]priority{进一步检查备选方案手册页}
要手动设置备选方案,
备选方案--设置[generic name][your current path]。

nom7f22z

nom7f22z9#

我在hadoop1.1中也遇到过类似的问题,我没有注意到 JAVA_HOME 在中发表了评论: hadoop/conf/hadoop-env.sh 是的

/#JAVA_HOME=/usr/lib/jvm/java-6-oracle

必须把它改成

JAVA_HOME=/usr/lib/jvm/java-6-oracle
ckx4rj1h

ckx4rj1h10#

更改 JAVA_HOME 变量输入 conf/hadoop-env.sh ```
export JAVA_HOME=/etc/local/java/

tcbh2hod

tcbh2hod11#

摘录自etc/hadoop/hadoop-env.sh
唯一需要的环境变量是java\u home。其他都是可选的。在运行分布式配置时,最好在该文件中设置javau home,以便在远程节点上正确定义它。
这意味着它更好,并建议把 java 家在这里。。即使现有定义读取javahome变量。也许它没有从之前设置的值中得到javau home的值。。。标准的apache手册没有告诉我们:(:(

相关问题