无法在hadoop二进制路径中找到winutils二进制文件

时间:2013-10-27 16:49:39

标签: hadoop

我在为最新的hadoop-2.2版本启动namenode时遇到以下错误。我没有在hadoop bin文件夹中找到winutils exe文件。我试过下面的命令

$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)

15 个答案:

答案 0 :(得分:93)

简单解决方案: 从here下载并添加到$HADOOP_HOME/bin

(资料来源:Click here

编辑:

对于 hadoop-2.6.0 ,您可以从Titus Barik blog >>下载二进制文件。

我不仅需要将HADOOP_HOME指向解压缩的目录[path],还需要提供系统属性-Djava.library.path=[path]\bin来加载本机库(dll)。

答案 1 :(得分:26)

如果我们直接采用Apache Hadoop 2.2.0版本的二进制发行版并尝试在Microsoft Windows上运行它,那么我们将遇到ERROR util.Shell:无法在hadoop二进制路径中找到winutils二进制文件。

Apache Hadoop 2.2.0版本的二进制发行版不包含一些Windows本机组件(如winutils.exe,hadoop.dll等)。这些是在Windows上运行Hadoop所必需的(非可选)。

因此,您需要在位于hadoop源代码内的“BUILD.txt”文件之后,从源代码构建hadoop的Windows本机二进制分发。您还可以按照以下帖子进行屏幕截图的分步指南

Build, Install, Configure and Run Apache Hadoop 2.2.0 in Microsoft Windows OS

ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path

答案 2 :(得分:24)

如果在使用Spark运行自包含的本地应用程序时遇到此问题(即,在向项目添加spark-assembly-xxx-hadoopx.xxjar或Maven依赖项之后),更简单的解决方案是放置winutils .exe(从here下载)&#34; C:\ winutil \ bin&#34;。然后,您可以通过在代码中添加以下行来将winutils.exe添加到hadoop主目录:

System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")

来源:点击here

答案 3 :(得分:17)

声明 java.io.IOException:找不到可执行文件null \ bin \ winutils.exe

解释在扩展或替换环境变量时收到null。如果你在Common Package中的Shell.Java中看到Source,你会发现HADOOP_HOME变量没有被设置,你接收的是null而不是错误。

因此,需要正确设置HADOOP_HOME或变量hadoop.home.dir属性。

希望这有帮助。

谢谢, 凯姆利什沃。

答案 4 :(得分:11)

我在使用Eclipse时遇到了这个问题。在我的情况下,我下载了正确的Hadoop版本(hadoop-2.5.0-cdh5.3.0.tgz),我提取了内容并将其直接放在我的C盘中。然后我去了

Eclipse-&gt;调试/运行配置 - &gt;环境(标签) - &gt;并添加了

变量:HADOOP_HOME

值:C:\ hadoop-2.5.0-cdh5.3.0

答案 5 :(得分:7)

您可以在此处下载winutils.exe: http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe

然后将其复制到您的dir()目录。

答案 6 :(得分:2)

hadoop执行hadoop相关命令需要

winutils.exe。请下载 hadoop-common-2.2.0 zip文件。 winutils.exe可以在bin文件夹中找到。解压缩zip文件并将其复制到本地hadoop / bin文件夹中。

答案 7 :(得分:2)

我遇到了同样的问题。从HADOOP_HOME路径中删除bin\为我解决了这个问题。 HADOOP_HOME变量的路径应该类似于。

C:\dev\hadoop2.6\

可能需要重启系统。就我而言,重启IDE就足够了。

答案 8 :(得分:2)

在Windows中设置 HADOOP_HOME 变量以解决问题。

您可以在org/apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/apache/hadoop/util/Shell.java找到答案:

来自

的IOException
  public static final String getQualifiedBinPath(String executable) 
  throws IOException {
    // construct hadoop bin path to the specified executable
    String fullExeName = HADOOP_HOME_DIR + File.separator + "bin" 
      + File.separator + executable;
    File exeFile = new File(fullExeName);
    if (!exeFile.exists()) {
      throw new IOException("Could not locate executable " + fullExeName
        + " in the Hadoop binaries.");
    }
    return exeFile.getCanonicalPath();
  }

来自

的HADOOP_HOME_DIR
// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
  home = System.getenv("HADOOP_HOME");
}

答案 9 :(得分:2)

  1. 下载[winutils.exe]
    来自URL:
    https://github.com/steveloughran/winutils/hadoop- version / bin
  2. 将其粘贴在HADOOP_HOME / bin下
    注意:您应该设置环境变量:
    用户变量:
    变量:HADOOP_HOME
    :Hadoop或spark目录

答案 10 :(得分:2)

在Pyspark中,要使用Pycharm运行本地Spark应用程序,请在下面的行中使用

os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']

答案 11 :(得分:1)

我在Windows中遇到了同样的问题。我通过

修复了它
  • link下载hadoop-common-2.2.0-bin-master。
  • 在Environment变量中创建用户变量HADOOP_HOME,并将hadoop-common bin目录的路径指定为值。
  • 您可以通过在cmd中运行hadoop来验证它。
  • 重新启动IDE并运行它。

答案 12 :(得分:1)

this链接以zip格式下载所需版本的hadoop文件夹(如果您在Windows上安装spark,则为其构建Spark,则为hadoop版本安装)。

将zip解压缩到所需目录。 您需要具有hadoop\bin形式的目录(如果需要,显式创建此类hadoop\bin目录结构),bin包含下载的hadoop的bin文件夹中包含的所有文件。除了winutil.exe之外,这将包含许多文件,如hdfs.dll,hadoop.dll等。

现在create environment variable HADOOP_HOME并将其设置为<path-to-hadoop-folder>\hadoop。然后add ;%HADOOP_HOME%\bin;PATH环境变量。

打开“新命令提示符”并尝试重新运行命令。

答案 13 :(得分:0)

我使用&#34; hbase-1.3.0&#34;和&#34; hadoop-2.7.3&#34;版本。设置HADOOP_HOME环境变量并复制&#39; winutils.exe&#39; HADOOP_HOME / bin文件夹下的文件解决了Windows操作系统上的问题。 注意将HADOOP_HOME环境设置为hadoop的安装文件夹(这些版本不需要/ bin文件夹)。 另外,我更喜欢使用跨平台工具cygwin来解决linux操作系统功能(尽可能尽可能),因为Hbase团队推荐linux / unix环境。

答案 14 :(得分:0)

Winutils.exe用于运行SPARK的Shell命令。 需要在不安装Hadoop的情况下运行Spark时,需要此文件。

步骤如下:

  1. 从以下位置下载winutils.exe,以获取hadoop 2.7.1。 https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [注意:如果您使用的是单独的hadoop版本,请从上述位置从GITHUB的相应hadoop版本文件夹中下载winutils。]

  2. 现在,在C:\驱动器中创建一个文件夹“ winutils”。现在,在文件夹“ winutils”内创建一个文件夹“ bin”,并将winutils.exe复制到该文件夹​​中。 因此,winutils.exe的位置将为 C:\ winutils \ bin \ winutils.exe

  3. 现在,打开环境变量并设置HADOOP_HOME = C:\ winutil [注意:请不要在 HADOOP_HOME 中添加 \ bin ,并且无需在路径中设置HADOOP_HOME。

您的问题必须解决!