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

use*_*491 104 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)
Run Code Online (Sandbox Code Playgroud)

Pra*_*d D 94

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

(来源:点击这里)

编辑:

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

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


Abh*_*jit 27

如果我们直接采用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 native二进制发行版.您还可以按照以下帖子逐步指导屏幕截图

在Microsoft Windows操作系统中构建,安装,配置和运行Apache Hadoop 2.2.0

错误util.Shell:无法在hadoop二进制路径中找到winutils二进制文件

  • 嗨Abhijit.你有没有遵循自己的指示?Windows不支持Hadoop.实际上它仅在某些版本的Windows Server上受支持.这对微软和HortonWorks来说非常糟糕. (2认同)
  • 那是两年多以前,当时非常(非常!)真实.我在两周前的一次会议上直接与Hortonworks工程师进行了核实. (2认同)

Trn*_*nKh 26

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

System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")
Run Code Online (Sandbox Code Playgroud)

来源:点击这里


小智 18

语句java.io.IOException:无法找到可执行文件null\bin\winutils.exe

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

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

希望这可以帮助.

谢谢,Kamleshwar.

  • System.setProperty("hadoop.home.dir","C:\\ winutil \\"); 参考:http://stackoverflow.com/a/33610936/3110474 (3认同)

小智 11

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

Eclipse-> Debug/Run Configurations - > Environment(tab) - >并添加

变量:HADOOP_HOME

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


Sou*_*nti 7

你可以在这里下载winutils.exe:http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe

然后将其复制到您的HADOOP_HOME/bin目录.


小智 5

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

步骤如下:

  1. 从以下位置下载winutils.exe for 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,也不需要在Path中设置HADOOP_HOME。

您的问题必须解决!