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

vwhgwdsa  于 2021-06-03  发布在  Hadoop
关注(0)|答案(15)|浏览(735)

我在为最新的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)
eni9jsuy

eni9jsuy1#

在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自

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主页\u目录

// 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");
}
fdx2calv

fdx2calv2#

如果您在使用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\\\")

来源:点击这里

ecbunoof

ecbunoof3#

从这个链接下载所需版本的hadoop文件夹(假设您在windows上安装spark,那么您的spark是为其构建的hadoop版本)作为zip。
将zip解压缩到所需目录。你需要有表格的目录 hadoop\bin (明确创建 hadoop\bin 目录结构(如果需要) bin 包含中包含的所有文件 bin 下载的hadoop的文件夹。除了winutil.exe之外,它还包含许多文件,如hdfs.dll、hadoop.dll等。
现在创建环境变量 HADOOP_HOME 设置为 <path-to-hadoop-folder>\hadoop . 然后添加 ;%HADOOP_HOME%\bin;PATH 环境变量。
打开一个“新命令提示符”并尝试重新运行命令。

xt0899hw

xt0899hw4#

我在使用eclipse时遇到了这个问题。在我的例子中,我下载了正确的hadoop版本(hadoop-2.5.0-cdh5.3.0.tgz),我提取了内容并将其直接放在我的c驱动器中。然后我去了学校
eclipse->debug/run configurations->environment(tab)->并添加了
变量:hadoop\u home
值:c:\hadoop-2.5.0-cdh5.3.0

woobm2wo

woobm2wo5#

如果我们直接使用ApacheHadoop2.2.0版本的二进制发行版并尝试在MicrosoftWindows上运行它,那么我们将遇到错误util.shell:在hadoop二进制路径中找不到winutils二进制文件。
apache hadoop 2.2.0版本的二进制发行版不包含某些windows本机组件(如winutils.exe、hadoop.dll等)。这些是在windows上运行hadoop所必需的(不是可选的)。
因此,您需要从hadoop源代码发行版中的“build.txt”文件后面的源代码构建hadoop的windows本机二进制发行版。你也可以按照下面的文章,一步一步的指导屏幕截图
在microsoft windows操作系统中构建、安装、配置和运行apache hadoop 2.2.0
error util.shell:在hadoop二进制路径中找不到winutils二进制文件

8tntrjer

8tntrjer6#

我在windows上也遇到了同样的问题。我把它修好了
从link下载hadoop-common-2.2.0-bin-master。
在环境变量中创建一个用户变量hadoop\u home,并将hadoop common bin目录的路径指定为一个值。
您可以通过在cmd中运行hadoop来验证它。
重新启动ide并运行它。

nr9pn0ug

nr9pn0ug7#

在pyspark中,要使用pycharm运行本地spark应用程序,请在下面的行中使用

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

ryevplcw8#

我也面临同样的问题。卸下 bin\ 从hadoop的home路径为我解决了这个问题。hadoop\u home变量的路径应该类似于。

C:\dev\hadoop2.6\

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

wlzqhblo

wlzqhblo9#

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

jfewjypa

jfewjypa10#

下载[winutils.exe]
从url:
https://github.com/steveloughran/winutils/hadoop- version /垃圾箱
在hadoop\u home/bin下通过
注:应设置环境变量:
用户变量:
变量:hadoop\u home
值:hadoop或spark dir

nzrxty8p

nzrxty8p11#

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

zkure5ic

zkure5ic12#

您可以在此处下载winutils.exe:http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
然后把它复制到你的电脑上 HADOOP_HOME/bin 目录。

nhn9ugyo

nhn9ugyo13#

winutils.exe用于运行spark的shell命令。当您需要运行spark而不安装hadoop时,您需要这个文件。
步骤如下:
从hadoop 2.7.1的以下位置下载winutils.exehttps://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [注意:如果您使用的是单独的hadoop版本,请从github上相应的hadoop版本文件夹从上述位置下载winutils。]
现在,在c:\drive中创建一个文件夹“winutils”。现在在“winutils”文件夹中创建一个文件夹“bin”,并复制该文件夹中的winutils.exe。因此winutils.exe的位置将是c:\winutils\bin\winutils.exe
现在,打开环境变量并设置hadoop\u home=c:\winutils[注意:请不要在hadoop\u home中添加\bin,也不需要在path中设置hadoop\u home]
你的问题必须解决!!

yuvru6vn

yuvru6vn14#

语句java.io.ioexception:找不到可执行文件null\bin\winutils.exe
说明在扩展或替换环境变量时接收空值。如果您在common包中看到shell.java中的源代码,您会发现hadoop\u home变量没有设置,您将接收null来代替它,因此会出现错误。
因此,需要为此设置hadoop\u home或变量hadoop.home.dir属性。
希望这有帮助。
谢谢,卡姆莱什瓦尔。

mznpcxlj

mznpcxlj15#

简单的解决方案:从这里下载并添加到 $HADOOP_HOME/bin (来源)
重要更新:
对于hadoop-2.6.0,您可以从titus barik博客>>下载二进制文件。
我不仅需要指出 HADOOP_HOME 提取目录 [path] ,还提供系统属性 -Djava.library.path=[path]\bin 加载本机libs(dll)。

相关问题