【问题标题】:Hadoop installation on windowsHadoop在windows上的安装
【发布时间】:2014-11-18 08:59:24
【问题描述】:

在我的 C 盘中提取 hadoop 后,我尝试执行 hadoop version 命令并出现以下错误。 JAVA_HOME 在我的环境变量中设置正确。有人可以帮忙解决这个错误吗?

C:\>hadoop version 

The system cannot find the path specified.
Error: JAVA_HOME is incorrectly set.
Please update C:\hadoop-2.5.1\conf\hadoop-env.cmd '-Xmx512m' is not recognized as an internal or external command, ooperable program or batch file.

【问题讨论】:

    标签: windows hadoop


    【解决方案1】:

    大部分答案建议复制JDK安装路径。但是,如果您不习惯这样做,可以使用Windows short path 设置路径名,以便所有应用程序都可以轻松访问该路径。

    如果环境变量包含空格,则设置它的概念:

    Progra~1 = 'Program Files'
    Progra~2 = 'Program Files(x86)'
    

    【讨论】:

    • 工作就像一个魅力!
    【解决方案2】:

    刚刚遇到同样的问题(Win 8.1 + Hadoop 2.7.0 [build from sources])。

    问题原来是java所在的路径名中的(ol'good)空格(在C:\ Program Files \ dir下)。我做的是这样的:

    1) 将 JDK 目录复制到 C:\Java\jdk1.8.0_40

    2) 编辑 \etc\hadoop\hadoop-env.cmd 并更改:set JAVA_HOME=c:\Java\jdk1.8.0_40

    3) 运行cmd并执行hadoop-env.cmd

    4) 现在检查“hadoop 版本”是否仍在抱怨(我没有)

    【讨论】:

      【解决方案3】:

      将 JDK 安装到没有空格的文件夹中。 试试C:\java\jdk1.8.x_xx,而不是C:\Program Files\Java\jdk1.8.x_xx

      【讨论】:

      • 现在是哪一年?说真的,这种事情仍然会在任何成熟的安装中中断???让我感到惊讶。
      • 已经是 2020 年了,但它仍然在打破
      【解决方案4】:

      您出错的原因是“程序文件”之间的空格。将其替换为 PROGRA~1 在所有路径中同时配置

      【讨论】:

        【解决方案5】:

        检查您的JAVA_HOME

        如果是 C:\Program Files\Java\jdk1.7.0_65。然后你会遇到这样的问题。 到 C:\MyDrive\Java\jdk1.7.0_65 并成功了。 “程序文件”中的空间会产生问题。

        路径是PATH;%JAVA_HOME%\bin

        如果您使用的是 Windows,那么您肯定会遇到以下问题(由于 X64 和 X86 问题):

        1.

        致命的 datanode.DataNode:secureMain java.lang.NullPointerException 中的异常 和

        2.

        致命的namenode.NameNode:无法启动namenode。 java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)

        解决办法:

        link复制这些文件hadoop.dll、hadoop.exp、hadoop.lib、hadoop.pdb、libwinutils.lib、winutils.exe、winutils.pdb 到你的hadoop安装位置的bin文件夹,看起来像这样。 ..\HadoopInstalled\hadoop\hadoop-2.6.0\hadoop-2.6.0\bin

        【讨论】:

          【解决方案6】:

          要避免在没有空格的路径中安装另一个 JDK,您可以使用 Windows 命令 mklink 创建符号链接。方法如下。

          1. 以管理员身份打开 cmd 提示符。
          2. 如果那里没有打开 cmd 提示符,请导航到 C:\。
          3. 创建符号链接。在这里,我将 Hadoop 抱怨的路径(使用程序文件)设置为没有空格的更简单的路径。 /D 参数表示您正在创建目录符号链接。

            mklink /D \java_home "C:\Program Files\Java\jdk1.7.0_65"

          4. 在您的 hadoop-env.cmd 中,将您的 JAVA_HOME 设置为您创建的符号链接:

            设置 JAVA_HOME=\java_home

          这对我有用。有关在 Windows 中创建符号链接的更多信息: http://www.windows7home.net/how-to-create-symbolic-link-in-windows-7/

          【讨论】:

            【解决方案7】:

            请在hadoop-env.cmd 中添加以下行。这应该是 hadoop-env.cmd 在 cmets 之后的第一行。

            set JAVA_HOME=C:\Progra~1\Java\jdk1.8.0_131\
            

            这个缩短的 Progra~1 名称是 SFN

            这不需要按照其他答案的目的将 java 复制到其他目录,并且您可以拥有特定于 hadoop 的 java 版本。

            【讨论】:

            • 我尝试了你的建议,在命令窗口中输入“hadoop version”时,我收到以下消息:
            【解决方案8】:

            将您的 java bin 位置添加到您的 path 环境变量中。 喜欢

            path = path;$JAVA_HOME/bin
            

            【讨论】:

            • 这应该可以,但不幸的是我浪费了一个小时试图调整环境变量,但没有成功。最后将 java 复制到“无空格”路径有效。
            【解决方案9】:

            这个问题的解决方法很简单

            大多数人会将 JAVA_HOME 设置为 C:\Program Files\Java\jdk1.8.0_121

            这里的问题是空格,你需要做的是,将 jdk1.8.0_121 的内容复制到 C 盘中的一个文件夹,比如 C:\java

            现在使用这个路径作为你的 JAVA_HOME

            【讨论】:

              【解决方案10】:

              打开命令提示符并尝试这个... echo %JAVA_HOME% 然后检查 java home set 与否。如果没有设置java home。

              查看here如何在windows中设置JAVA_HOME

              【讨论】:

                【解决方案11】:

                我也遇到过类似的问题,以下步骤为我解决了错误。

                Download & 在c:/java/ 中安装 Java

                (如果程序中安装了java,请确保路径是这样的 文件,那么 hadoop-env.cmd 将无法识别 java 路径)

                Download Hadoop 二进制分发。

                设置环境变量:

                JAVA_HOME = "c:/Java"
                HADOOP_HOME="<your hadoop home>"
                Path= "JAVA_HOME/bin"
                Path = "HADOOP_HOME/bin" 
                

                这是一个GitHub link,它有一些Hadoop版本的winutils。

                (如果您使用的版本不在列表中,请按照 在 windows 上设置 Hadoop 的常规方法 - link)

                如果您找到了您的版本,则将文件夹的所有内容复制粘贴到路径:/bin/

                设置所有.xml配置文件-Link

                最后在 hadoop-env.cmd 文件中设置 JAVA_HOME 路径

                大概会解决'JAVA_HOME is incorrectly set.'错误

                希望这会有所帮助。

                【讨论】:

                  【解决方案12】:

                  错误:

                  >>hadoop version
                  'C:\Program' is not recognized as an internal or external command,
                  operable program or batch file.
                  HADOOP_HDFS_HOME not found
                  

                  我想问题可能是以下任何一种:

                  • 您尚未设置尝试运行的程序的可执行文件的路径。
                  • 设置的路径已损坏,并且您的目标可执行文件不存在。
                  • 您可能已经设置了程序的路径,然后更改了该程序在文件系统上的位置,或者一开始就没有设置路径。

                  我的建议:

                  • 在设置环境变量时检查路径。
                  • java 文件夹和 Hadoop 文件夹都应该放在一个驱动器中。因此,请检查 java 文件夹和 Hadoop 文件夹的路径。
                  • 检查您在编辑 hdfs-site.xml 文件时添加的路径。
                  • 检查您在编辑 Hadoop-env.cmd 时添加的路径

                  注意:查看这篇文章以获得更多参考。 https://medium.com/analytics-vidhya/hadoop-setting-up-a-single-node-cluster-in-windows-4221aab69aa6

                  【讨论】:

                    【解决方案13】:

                    你可以调试bin文件夹下的hadoop.cmd文件,可能有一些命令有语法问题或提供的路径不正确。

                    打开hadoop.cmd文件,看到第一行“@echo off”就会出现。将“@echo off”改为“@echo on”并保存。现在运行“hadoop -version”命令。它将向您显示“命令的语法不正确”错误即将到来的命令。如果存在语法问题或可能存在某些路径问题,请更正它。

                    【讨论】:

                      【解决方案14】:

                      “@echo on”将帮助我们追踪错误。该消息出现在 hadoop-config.cmd 文件中。请将 C:\Program Files\Java 复制到 C:\Java 并更改路径并尝试。这会起作用。

                      【讨论】:

                        【解决方案15】:

                        只需删除 hadoop-env.cmd 文件中的 bin 文件夹(C:\hadoop-2.8.0\etc\hadoop\hadoop-env.cmd) “C:\Java\jdk-9.0.1\bin”并设置我在下面提到的路径。这对我有用。

                        set JAVA_HOME="C:\Java\jdk-9.0.1"
                        

                        【讨论】:

                          【解决方案16】:

                          正如其他人回答的那样,这是因为 JAVA_HOME 路径中的空间,我不得不用 Progra~1 替换 Program Files。 但我必须在环境变量和 hadoop-env.cmd 文件中更改它。 我发现同样的错误,直到我在两个地方都改变了它。

                          【讨论】:

                            【解决方案17】:

                            所以 Hadoop 不喜欢任何环境变量中的空格。 所以我的建议是明确设置

                            • JAVA_HOME
                            • HADOOP_BIN_PATH
                            • HADOOP_HOME

                            并对所有文件路径使用C:\PROGRA~1\ 语法,避免使用空格。

                            【讨论】:

                              【解决方案18】:

                              这就是我的 hadoop 文件在 windows 上的样子

                              我已经在 github 中为 windows 11 上传了我的工作 etc/hadoop 文件夹

                              我的环境路径

                              JAVA_HOME = D:\Java\jdk1.8.0_202

                              HADOOP_HOME = d:\hadoop-3.3.1

                              HADOOP_BIN_PATH = d:\hadoop-3.3.1\bin

                              需要修改的其余XML文件和内容可以在我的github repo中找到

                              希望这有助于https://github.com/gptshubham595/hadoop-windows

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 2017-05-27
                                • 1970-01-01
                                • 2016-12-11
                                • 2020-11-07
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多