【问题标题】:Hadoop: «ERROR : JAVA_HOME is not set»Hadoop:«错误:未设置 JAVA_HOME»
【发布时间】:2012-02-08 06:30:28
【问题描述】:

我正在尝试在 Ubuntu 11.10 上安装 Hadoop。我将文件conf/hadoop-env.sh中的JAVA_HOME变量设置为:

# export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk

然后我执行这些命令(独立操作):

$ mkdir input 
$ cp conf/*.xml input 
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 
$ cat output/*

但是在执行第三条命令时出现如下错误:

错误:未设置 JAVA_HOME

JAVA_HOME 变量是否设置不正确?

【问题讨论】:

  • # 真的存在吗?如果是这样,则表示该行是注释。
  • @DaveNewton 将其作为答案发布,以便我投票!
  • 这里有一个解决这个问题的方法。问题涉及旧的交互/非交互和登录/非登录 shell 概念:thinkinginsoftware.blogspot.com/2012/06/…

标签: linux hadoop ubuntu-11.04


【解决方案1】:

我尝试更改/etc/environment

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

在从节点上,它可以工作。

【讨论】:

    【解决方案2】:

    这里我们提供了安装 Hadoop 时设置 JAVA_HOME 的简单步骤

    Step1:转到Java库路径/lib jvm

    然后在 .bashrc 文件中设置 JAVA_HOME & PATH

    来源:http://commandstech.com/hadoop-error-java_home-is-not-set-and-could-not-be-found-in-hadoop-installation/

    第 2 步:完成后使用 Hadoop env 文件进行更新。

    一旦完成,然后停止守护程序并再次启动守护程序。

    【讨论】:

      【解决方案3】:

      在某些发行版(CentOS/OpenSuSe,...)中,只有在 /etc/environment 中设置 JAVA_HOME 时才会起作用。

      【讨论】:

        【解决方案4】:

        我在我的环境中解决了这个问题,没有修改 hadoop-env.sh

        您最好使用/bin/bash 作为默认shell 而不是/bin/sh

        之前检查这些:

        1. 你已经配置了java和env(成功echo $JAVA_HOME
        2. 正确配置 hadoop

        echo $SHELL在每个节点,检查是否打印/bin/bash 如果没有,vi /etc/passwd,在你的用户名后面添加/bin/bash 参考

        Changing default shell in Linux

        https://blog.csdn.net/whitehack/article/details/51705889

        【讨论】:

          【解决方案5】:

          对我有用的解决方案是将我的 JAVA_HOME 设置为 /etc/environment

          虽然JAVA_HOME 可以在/etc/profile 文件中设置,但JAVA_HOME 或任何系统变量的首选位置是/etc/environment

          在任何文本编辑器(如 nano 或 vim)中打开 /etc/environment 并添加以下行:

          JAVA_HOME="/usr/lib/jvm/your_java_directory"
          

          加载变量:

          source /etc/environment
          

          检查变量是否正确加载:

          echo $JAVA_HOME
          

          【讨论】:

            【解决方案6】:

            我尝试了上述解决方案,但以下解决方案对我有用

            export JAVA_HOME=/usr/java/default
            

            【讨论】:

              【解决方案7】:

              确保您已删除评论标签并更改了hadoop-env.sh 中的JAVA_HOME 以及相应的.bashrc 和/或.profile

              # export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
              

              应该是

              export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
              

              您可以在/etc/profile 中为所有用户设置JAVA_HOMEPATH(确保您之前没有将其设置为错误的路径)。

              另外,不要忘记通过注销/登录或执行source /etc/profile 来激活新更改。

              【讨论】:

                【解决方案8】:

                将此export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk 复制到hadoop-env.sh 文件。

                JAVA_HOME 是存在 java 二进制文件的位置。

                【讨论】:

                  【解决方案9】:

                  您可以在您的.bashrc 文件中添加:

                  export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
                  

                  当你更新你的包时它会动态变化。

                  【讨论】:

                    【解决方案10】:

                    在您的终端中输入 echo $JAVA_HOME 以确保您的 JAVA_HOME 已设置。

                    您也可以输入java -version 以了解您实际使用的Java 版本。

                    顺便说一句,阅读您的描述似乎是您真正的写作

                    export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
                    

                    在文件conf/hadoop-env.sh中,你应该在你的终端或者~/.bashrc或者~/.profile中写入,然后输入source < path to modified file >

                    【讨论】:

                    • 是的,默认情况下 # 在那里,所以我删除了它,我再次尝试了这 4 个命令,它可以工作。但是当我输入 "echo $JAVA_HOME" 时,我没有获得它的值,当我输入 "java -version" 时,我获得了 "java version "1.6.0_23" 。对吗?OpenJDK Runtime Environment (IcedTea6 1.11pre) ( 6b23~pre11-0ubuntu1.11.10) OpenJDK 服务器虚拟机(内部版本 20.0-b11,混合模式)”。对吗?
                    • 如果没有出现写入 echo $JAVA_HOME",则表示环境变量未正确设置。键入 sudo vi ~/.bashrc 然后在文件中添加:export JAVA_HOME= export PATH=$ PATH:/bin. 然后输入 sudo source ~/.bashrc
                    • 我正在关注本教程hadoop.apache.org/common/docs/stable/…:JAVA_HOME 仅在 conf/hadoop-env.sh 中定义。我在 hadoop- 中添加了 export PATH=$PATH:/bin env.sh 文件,输入“echo $PATH”会出现路径,但输入“echo $ JAVA_HOME”会出现空格!!!
                    • @alain.janinm - 您的链接已损坏
                    • @JeremyHajek 感谢您的关注,它经常在一段时间后发生...这是新链接:michael-noll.com/tutorials/…
                    【解决方案11】:

                    您应该在hadoop-env.sh 文件中设置JAVA_HOME,该文件也位于Hadoop 配置目录中。 默认情况下,JAVA_HOME 设置行被注释。

                    【讨论】:

                    • 在当前版本 2.9.0 中它存在,但将当前环境的 JAVA_HOME 向前推进。那里的文档建议该值应该针对分布式设置进行硬编码。我发现在单节点伪分布式操作中,在这里设置它会有所帮助。 YMMV。
                    • 是的@russellpierce,硬编码实际上是唯一有效的方法......但是,但是设置 /etc/environemnt、/etc/profile 和 .bashrc 根本没有帮助
                    • 找不到hadoop-env.sh文件的可以使用find hadoop/ -name hadoop-env.sh命令找到。在我的电脑中,该文件位于 .../hadoop/etc/hadoop/hadoop-env.sh。
                    【解决方案12】:
                    • hadoop 错误:未设置 JAVA_HOME

                    以上错误是因为两个单词之间有空格。

                    例如:Java 位于 C:\Program Files\Java --> Programfiles 之间的空间会导致上述问题.如果删除空格,它不会显示任何错误。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-11-16
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-12-28
                      相关资源
                      最近更新 更多