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

在hadoop二进制路径中找不到winutils二进制文件,hadoop,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

在为最新的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)
$bin/hdfs namenode-格式
$sbin/thread-daemon.sh启动资源管理器
错误[main]util.Shell(Shell.java:getWinUtilsPath(303))-在hadoop二进制路径中找不到winutils二进制文件
java.io.IOException:在Hadoop二进制文件中找不到可执行文件null\bin\winutils.exe。
位于org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
位于org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
位于org.apache.hadoop.util.Shell(Shell.java:293)
位于org.apache.hadoop.util.StringUtils。(StringUtils.java:76)
位于org.apache.hadoop.warn.server.resourcemanager.resourcemanager.main(resourcemanager.java:863)
声明 java.io.IOException:找不到可执行文件null\bin\winutils.exe

说明在扩展或替换环境变量时接收空值。如果您在Common包中的Shell.Java中看到源代码,您将发现HADOOP_HOME变量没有被设置,您将收到null来代替它,因此会出现错误

因此,需要为此正确设置HADOOP_HOME或变量HADOOP.HOME.dir属性

希望这有帮助

谢谢,
Kamleshwar.

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

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

因此,您需要从hadoop源发行版中的“build.txt”文件后面的源代码构建hadoop的windows本机二进制发行版。你也可以按照下面的帖子进行逐步的屏幕截图指导


hadoop需要winutils.exe来执行与hadoop相关的命令。请下载 hadoop-common-2.2.0 zip文件。winutils.exe可在bin文件夹中找到。解压缩zip文件并将其复制到本地hadoop/bin文件夹中。

简单解决方案: 从下载并添加到
$HADOOP\u HOME/bin

()

重要更新:

对于hadoop-2.6.0,您可以从下载二进制文件


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

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

Eclipse->调试/运行配置->环境(选项卡)->并添加

变量:HADOOP\u HOME


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

您可以在此处下载winutils.exe:


然后将其复制到您的
HADOOP\u HOME/bin
目录。

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

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

来源:点击我也面临同样的问题。从HADOOP主路径中删除
bin\
为我解决了这个问题。HADOOP_HOME变量的路径应该类似于

C:\dev\hadoop2.6\

可能需要重新启动系统。在我的例子中,重新启动IDE就足够了。

在windows中设置HADOOP\u HOME变量来解决问题

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

IOException from

  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\u HOME\u 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");
}
我使用了“hbase-1.3.0”和“hadoop-2.7.3”版本。设置HADOOP_HOME环境变量并复制HADOOP_HOME/bin文件夹下的“winutils.exe”文件可以解决windows操作系统上的问题。 注意将HADOOP_HOME environment设置为HADOOP的安装文件夹(这些版本不需要/bin文件夹)。
此外,我更喜欢使用跨平台工具解决linux操作系统功能问题(尽可能),因为Hbase团队推荐linux/unix环境。

我在windows中也遇到了同样的问题。我把它修好了

  • 从下载hadoop-common-2.2.0-bin-master
  • 在环境变量中创建一个用户变量HADOOP_HOME,并将HADOOP common bin directory的路径指定为一个值
  • 您可以通过在cmd中运行hadoop来验证它
  • 重新启动IDE并运行它

从链接下载所需版本的hadoop文件夹(例如,如果您在Windows上安装spark,则下载为其构建spark的hadoop版本),作为zip

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

现在
HADOOP\u HOME
并将其设置为
\HADOOP
。然后
;%HADOOP_HOME%\bin
路径
环境变量

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

  • 下载[winutils.exe]
    从URL:
    版本
    /bin
  • 在HADOOP_HOME/bin下通过它
    注意:您应该设置环境变量:
    U
    os.environ['HADOOP_HOME'] = "C:\\winutils"
    print os.environ['HADOOP_HOME']