Bash 使用Hadoop:localhost:Error:JAVA\u HOME未设置
我正在使用Ubuntu12.04LTS 我正在阅读hadoop快速入门手册,以创建一个伪分布式操作。这看起来简单明了(容易!) 但是,当我尝试运行Bash 使用Hadoop:localhost:Error:JAVA\u HOME未设置,bash,hadoop,ubuntu-12.04,java-home,Bash,Hadoop,Ubuntu 12.04,Java Home,我正在使用Ubuntu12.04LTS 我正在阅读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/j
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
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
在/etc/bash.bashrc
中,我设置了
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
哪个java
返回:
/usr/bin/java
/usr/lib/jvm/java-6-oracle
java–版本
有效
echo$JAVA\u HOME
返回:
/usr/bin/java
/usr/lib/jvm/java-6-oracle
我甚至尝试成为root用户,并在终端中显式编写:
$ JAVA_HOME=/usr/lib/jvm/java-6-oracle
$ export JAVA_HOME
$ start-all.sh
如果你能告诉我如何解决这个错误,我将不胜感激。
我在想我的
JAVA\u HOME
不知怎么被覆盖了。如果是这样的话,你能给我解释一下如何使我的导出成为全局的吗?调试的方法是在start-all.sh中添加一个“echo$JAVA\u HOME”。您是以不同的用户名运行hadoop环境,还是以自己的身份运行?如果是前者,很可能没有为该用户设置JAVA_HOME环境变量
另一个潜在的问题是您错误地指定了JAVA_HOME,并且您提供的值没有指向JDK/JRE。请注意,“哪种java”和“java-version”都可以工作,即使java\u HOME设置不正确。我使用的是hadoop 1.1,面临同样的问题 通过将
/etc/hadoop/hadoop env.sh
中的JAVA\u HOME
变量更改为:
export JAVA_HOME=/usr/lib/jvm/<jdk folder>
export JAVA_HOME=/usr/lib/jvm/
解决此问题的方法是导出conf/hadoop-env.sh文件中的JAVA_HOME变量
不管您是否已经在~/.bashrc中导出了该变量,它仍然会显示错误。
因此,编辑conf/hadoop env.sh并取消对“export JAVA_HOME”行的注释,并为其添加适当的文件系统路径,即指向JAVA JDK的路径
#要使用的Java实现。必需。export JAVA_HOME=“/path/to/JAVA/JDK/”
摘自etc/hadoop/hadoop-env.sh 唯一需要的环境变量是JAVA_HOME。其他的都是 可选。运行分布式配置时,最好 在此文件中设置JAVA_HOME,以便在 远程节点
这意味着更好,建议将JAVA_设置在此处。。即使现有定义读取JAVA_HOME变量。也许它没有从之前设置的值中获取JAVA_HOME的值。。。标准apache手册没有说明这一点:(:(检查您的备选方案是否指向正确的版本,您可能实际指向不同的版本,并试图在另一个已安装的版本上更改hadoop-env.sh -备选方案——安装/etc/hadoop/conf[generic_name][your correct path]priority{进一步检查备选方案手册页} 要手动设置备选方案
备选方案——设置[generic name][your current path]。在
conf/hadoop env.sh
export JAVA_HOME=/etc/local/java/<jdk folder>
export JAVA_HOME=/etc/local/JAVA/
注意:不要使用
导出JAVA_HOME=${JAVA_HOME}
!此错误来自第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
中
在该脚本中尝试echo$JAVA_HOME
。如果它无法识别
使用以下内容查找您的JAVA\u主页
:
$(readlink-f/usr/bin/javac|sed“s:/bin/javac::”)
并更换线路
export JAVA_HOME=${JAVA_HOME}
在使用JAVA_HOME的
/etc/hadoop/hadoop env.sh
中,您可以从上面的命令获得。在hadoop 1.1中,我也遇到过类似的问题
我没有注意到JAVA_HOME
中有注释:hadoop/conf/hadoop env.sh
export JAVA_HOME=/etc/local/java/<jdk folder>
是的
/#JAVA_HOME=/usr/lib/jvm/java-6-oracle
必须把它改成
JAVA_HOME=/usr/lib/jvm/java-6-oracle
不管debian或任何linux版本,只要知道
~/.bash\u profile
属于特定用户,并且不是系统范围的。
在伪分布式环境中,hadoop在localhost
上工作,因此.bash\u配置文件中的$JAVA\u HOME
不再有用
只需在
~/.bashrc
中导出JAVA_HOME,并在系统范围内使用它。在ubuntu LTS 16.04上遇到了相同的问题。运行bash-vx./bin/hadoop
可以测试JAVA是否是目录。因此我将JAVA_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.
所以我把/etc/hadoop/hadoop env.sh
中的JAVA_HOME改为
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/
hadoop启动很好。这也在本文中提到。我把它放在文件
~/.bashrc
的第一行,然后它工作得很好
export JAVA_HOME=/usr/lib/jvm/default JAVA
当您更改bashrc时,您需要重置terminalThanks。当时我以Root用户身份运行它(以避免权限问题)它覆盖了我的JAVA_主页。我最终创建了一个新用户并赋予了它正确的权限。Bash.Bashrc使用了新的用户名。现在一切都很好[如new to Solution:)]我还必须显式地设置它,而不是${JAVA_HOME}@NikitaG。我也是这样做的。即使我回显${JAVA_HOME}始终打印正确的值,只显式设置它。在hadoop-2.7.3中,hadoop env.sh
文件位于hadoop-2.7.3/etc/hadoop
目录中,而不是conf
目录是的,情况就是这样。它也适用于hadoop-2.6.0。谢谢!适用于hadoop-2.7.3适用于hadoop-3.0在3038年也适用于hadoop 2.10.1你能详细说明你的答案吗?再加上一点关于你提供的解决方案的描述?我也面临同样的问题,