Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop中没有设置JAVA\u Home_Java_Hadoop_Installation - Fatal编程技术网

Hadoop中没有设置JAVA\u Home

Hadoop中没有设置JAVA\u Home,java,hadoop,installation,Java,Hadoop,Installation,我是hadoop的初学者,尝试在我的Ubuntu中作为单节点集群安装和运行hadoop。这是我在hadoop_env.sh中的JAVA_主页 # The java implementation to use. export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/ export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"} 但当我运行它时,会出现以下错误- Starting namenodes

我是hadoop的初学者,尝试在我的Ubuntu中作为单节点集群安装和运行hadoop。这是我在hadoop_env.sh中的JAVA_主页

# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/
export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}
但当我运行它时,会出现以下错误-

Starting namenodes on [localhost]
localhost: Error: JAVA_HOME is not set and could not be found.
localhost: Error: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [0.0.0.0]
0.0.0.0: Error: JAVA_HOME is not set and could not be found.

如何删除此错误?

是否正在加载hadoop_env.sh?您可能正在引用hadoop env.sh(破折号而不是下划线-位于conf目录下)

顺便说一句,这是一个非常有用的快速安装指南:


在您的HADOOP_HOME/conf目录下,请更新
HADOOP env.sh
文件。它有导出JAVA_HOME的入口


在这个文件中设置适当的JAVA_HOME应该可以解决您的问题。

我调试了代码,发现即使在环境中设置了JAVA_HOME,但由于在代码中建立了到其他主机的ssh连接,该值也会丢失,并且在start-dfs.sh中显示为well set的JAVA_HOME变量在hadoop-env.sh中变为未设置


这个问题的解决方案是在hadoop-env.sh中设置JAVA_HOME变量,它应该可以正常工作。

我也遇到了同样的错误,并用Soil Jain的话解决了它,但更清楚一点:hadoop-env.sh使用了如下表达式

export JAVA_HOME=${JAVA_HOME}
如果您硬编码到JVM安装的路径,它就会工作

export JAVA_HOME=/usr/lib/jvm/java...

这种由环境变量决定的解决方案似乎失败了。硬编码为我解决了这个问题。

它不知道程序和文件之间的空间:“程序文件”。
所以,我将jdk的文件夹复制到C:或文件夹名称中不包含空格的文件夹,并分配:export JAVA\u HOME=name\u Path\u Copied。我看到它运行正常

只要您使用默认的conf目录
$HADOOP\u HOME/conf
$HADOOP\u HOME/etc/HADOOP
,上述答案就应该有效。如果您使用的是不同的conf文件夹,下面是一些您应该做的事情

  • hadoop env.sh
    文件从默认的conf目录复制到conf文件夹,比如
    /home/abc/hadoopConf
  • 更换线路

    #export JAVA_HOME=${JAVA_HOME}
    
    以下是:

    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    export HADOOP_CONF_DIR=/home/abc/hadoopConf
    

  • 适当地更改值。如果在你的代码中有任何与Hadoop相关的环境变量。BASHC 或<代码>。Prime<代码> >或代码>。BasHyFrase考虑在上面行添加它们。

    < P> >我使用Hadoop 2.8.即使我导出了JAVA_HOME(我把它放在.bashrc中),我在尝试运行start-dfs.sh时仍然发现了这个错误

    user@host:/opt/hadoop-2.8.0 $ echo $JAVA_HOME
    <path_to_java>
    user@host:/opt/hadoop-2.8.0 $ $JAVA_HOME/bin/java -version
    java version "1.8.0_65"
    ...
    user@host:/opt/hadoop-2.8.0 $ sbin/start-dfs.sh
    ...
    Starting namenodes on []
    localhost: Error: JAVA_HOME is not set and could not be found.
    localhost: Error: JAVA_HOME is not set and could not be found.
    

    也许上面的帖子暗示了这一点(sourcing hadoop env.sh)。只是觉得有人应该大声说出来。现在它运行了。我还遇到了其他问题(我怀疑是因为我使用的服务器资源有限),但至少我解决了这个问题。

    首先,必须在
    hadoop\u env.sh
    中设置JAVA\u HOME。(您在.bashrc中的本地JAVA_主页可能会被忽略)

    然后,设置
    HADOOP\u CONF\u DIR
    指向您的
    HADOOP\u env.sh
    目录。在~/.bashrc中,添加以下行:

    HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
    export HADOOP_CONF_DIR
    

    其中
    /usr/local/hadoop/etc/hadoop
    是包含
    hadoop_env.sh

    的目录,我已经提出了这个问题。我已经更新了JAVA_主页的导出。但当我运行它时,错误还是出现了。是因为使用了openjdk7?和hadoop-env.sh。对不起,错别字了。它根本没有设置-如果找不到java,那将是另一个错误。更简单的方法是通过.bashrc文件将java_导出到主页。我也在.bashrc文件中设置了它。这就是我在hadoop-env.sh文件和.bashrc文件export JAVA_HOME=/usr/lib/jvm/JAVA-7-sun中所做的。我建议您使用我上面发给您的指南重新开始安装。我已将其更新为export JAVA_HOME=/usr/lib/jvm/JAVA-7-sun。。我的案子还是一样。删除用户bash概要文件中的java_home变量并在haddop-env.sh文件中添加上述条目后,成功启动了Hadoop。一个信息:在最新版本的Hadoop中,Hadoop-env.sh文件的位置已经更改。i、 e.HADOOP_HOME/etc/HADOOP/HADOOP-env.shAs for@toobee,这对我来说很有用,但为什么呢。我不是Linux专业人士,那么为什么在本地机器上进行SSHing时没有设置JAVA_HOME?我在~/.profiles中设置了我的设置,这是Hadoop代码中的一个bug。JAVA_HOME的值在代码中被其他内容覆盖,即使您在~/.profile.中设置了它。非常准确。作为一种替代解决方案,您还可以在/etc/environment中设置它,它会工作的!:)非常感谢你!我曾经设置了一个硬代码,比如
    /usr/lib/jdk1.8.0_231
    ,但是dataNode restart fail get
    resource\u management.core.exceptions.ExecutionFailed:Execution'ambari-sudo.sh su hdfs-l-s/bin/bash-c'ulimit-c unlimit/usr/hdp/3.1.4.0-315/hadoop/bin/hdfs--config/usr/hdp/3.1.4.0-315/hadoop/conf--守护进程停止数据节点“”返回1。错误:JAVA_HOME/usr/lib/jdk1.8.0_231不存在。
    # The java implementation to use.
    export JAVA_HOME=/usr/lib/jvm/default-java
    
    HADOOP_CONF_DIR="/usr/local/hadoop/etc/hadoop"
    export HADOOP_CONF_DIR