我正在使用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
不知怎么被推翻了。如果是这样的话,你能向我解释一下如何使我的出口产品全球化吗?
11条答案
按热度按时间am46iovg1#
调试的方法是在start-all.sh中放置一个“echo$java\u home”。您是以不同的用户名运行hadoop环境,还是以自己的身份运行hadoop环境?如果是前者,很可能没有为该用户设置javahome环境变量。
另一个潜在的问题是您错误地指定了javahome,并且您提供的值没有指向jdk/jre。请注意,“which java”和“java-version”都可以工作,即使javahome设置不正确。
ego6inou2#
注意:请勿使用
export JAVA_HOME=${JAVA_HOME}
!nue99wik3#
这个错误来自第180行
在
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,你就得到了上面的命令。disbfnqx4#
在ubuntu lts 16.04上遇到了同样的问题。跑步
bash -vx ./bin/hadoop
它测试了java是否是一个目录。所以我把javau home改成了一个文件夹,就成功了。所以我在家里换了 java
./etc/hadoop/hadoop-env.sh
到hadoop的开始很好。本文也提到了这一点。
l2osamch5#
我使用的是hadoop1.1,面临着同样的问题。
我通过改变解决了
JAVA_HOME
变量输入/etc/hadoop/hadoop-env.sh
作为:oalqel3c6#
不管是debian还是任何linux风格,只要知道
~/.bash_profile
属于特定用户并且不是系统范围的。在伪分布式环境中,hadoop在localhost
所以$JAVA_HOME
在。bashèu配置文件已经没有用了。只需将javau导出到
~/.bashrc
并在整个系统范围内使用它。gojuced77#
解决这个问题的方法是导出conf/hadoop-env.sh文件中的javahome变量。
不管您是否已经在~/.bashrc中导出了该变量,它仍然会显示错误。
因此,editconf/hadoop-env.sh并取消对“export java\u home”行的注解,并为其添加一个适当的文件系统路径,即指向javajdk的路径。
要使用的java实现。必修的。
export java_home=“/path/to/java/jdk/”
new9mtju8#
检查您的备选方案是否指向正确的版本,您可能实际指向不同的版本,并试图在另一个已安装的版本上更改hadoop-env.sh。
-备选方案——安装/etc/hadoop/conf[generic\u name][your correct path]priority{进一步检查备选方案手册页}
要手动设置备选方案,
备选方案--设置[generic name][your current path]。
nom7f22z9#
我在hadoop1.1中也遇到过类似的问题,我没有注意到
JAVA_HOME
在中发表了评论:hadoop/conf/hadoop-env.sh
是的必须把它改成
ckx4rj1h10#
更改
JAVA_HOME
变量输入conf/hadoop-env.sh
```export JAVA_HOME=/etc/local/java/
tcbh2hod11#
摘录自etc/hadoop/hadoop-env.sh
唯一需要的环境变量是java\u home。其他都是可选的。在运行分布式配置时,最好在该文件中设置javau home,以便在远程节点上正确定义它。
这意味着它更好,并建议把 java 家在这里。。即使现有定义读取javahome变量。也许它没有从之前设置的值中得到javau home的值。。。标准的apache手册没有告诉我们:(:(