【问题标题】:Spark 1.6-Failed to locate the winutils binary in the hadoop binary pathSpark 1.6 - 无法在 hadoop 二进制路径中定位 winutils 二进制
【发布时间】:2016-04-14 08:35:02
【问题描述】:

我知道有一个非常相似的帖子(Failed to locate the winutils binary in the hadoop binary path),但是,我已经尝试了建议的每个步骤,但仍然出现相同的错误。

我正在尝试在 Windows 7 上使用 Apache Spark 版本 1.6.0 来执行此页面上的教程http://spark.apache.org/docs/latest/streaming-programming-guide.html,特别是使用此代码:

./bin/run-example streaming.JavaNetworkWordCount localhost 9999

但是,此错误不断出现:

看完这篇文章 Failed to locate the winutils binary in the hadoop binary path

我意识到我需要 winutils.exe 文件,所以我下载了一个 hadoop 二进制 2.6.0,并定义了一个名为 HADOOP_HOME 的环境变量:

 with value C:\Users\GERAL\Desktop\hadoop-2.6.0\bin  

并将其放置在 Path 上,如下所示:%HADOOP_HOME%

但当我尝试代码时,仍然会出现相同的错误。有谁知道如何解决这个问题?

【问题讨论】:

  • 你不应该做 HADOOP_HOME=C:\Users\GERAL\Desktop\hadoop-2.6.0 并添加 %HADOOP_HOME%\bin;到 PATH 变量
  • @JD_247 没用,谢谢
  • @JD_247 你的评论对我来说就像一个魅力。 :)

标签: java hadoop apache-spark


【解决方案1】:

如果您使用 Hadoop 在 Windows 上运行 Spark,那么您需要确保正确安装了 Windows hadoop 安装。要运行 spark,您需要在 hadoop 主目录 bin 文件夹中有 winutils.exe 和 winutils.dll。

我想请你先试试这个:

1) 您可以从以下链接中的捆绑包下载 .dll 和 .exe 文件。

https://codeload.github.com/sardetushar/hadooponwindows/zip/master

2) 将 winutils.exe 和 winutils.dll 从该文件夹复制到您的 $HADOOP_HOME/bin。

3) 在您的 spark-env.sh 或命令中设置HADOOP_HOME,并将HADOOP_HOME/bin 添加到PATH

然后尝试运行。

如果您需要任何有关 hadoop 安装帮助的帮助,有一个不错的链接,您可以尝试一下。

http://toodey.com/2015/08/10/hadoop-installation-on-windows-without-cygwin-in-10-mints/

但是,可以等待。您可以尝试前几个步骤。

【讨论】:

  • 这就像一个魅力。我只想补充一点,shell 默认在HADOOP_HOME/bin 内搜索,所以如果你在路径中设置HADOOP_HOME/bin,它会在HADOOP_HOME/bin/bin 内搜索winutils.exe 并抛出错误。
【解决方案2】:

Hadoop Bin然后System.setProperty("hadoop.home.dir", "Desktop\bin");下载bin文件

【讨论】:

  • 在哪里写System.setProperty("hadoop.home.dir", "Desktop\bin");
  • @PragyadityaDas in main
【解决方案3】:

安装 JDK 1.8,从 Apache Spark 下载 Spark 二进制文件,从 Git repo 下载 Winutils

为 JDK、Spark 二进制文件、Winutils 设置用户变量路径

JAVA_HOME
C:\Program Files\Java\jdk1.8.0_73

HADOOP_HOME
C:\Hadoop

SPARK_HOME
C:\spark-2.3.1-bin-hadoop2.7

PATH
C:\Program Files\Java\jdk1.8.0_73\bin;%HADOOP_HOME%\bin;%SPARK_HOME%\bin;

打开命令提示符并运行 spark-shell

Spark Shell

【讨论】:

    【解决方案4】:

    您可以尝试将 HADOOP_HOME 环境变量设置为:

    C:\Users\GERAL\Desktop\hadoop-2.6.0
    

    而不是

    C:\Users\GERAL\Desktop\hadoop-2.6.0\bin  
    

    【讨论】:

      【解决方案5】:

      以下错误是由于运行 Spark 应用程序时类路径中缺少 winutils 二进制文件。 Winutils 是 Hadoop 生态系统的一部分,不包含在 Spark 中。即使在抛出异常之后,您的应用程序的实际功能也可能正确运行。但最好有它,以避免不必要的问题。为了避免错误,请下载winutils.exe二进制文件并将其添加到类路径中。

      import org.apache.spark.SparkConf;
      import org.apache.spark.api.java.JavaRDD;
      import org.apache.spark.api.java.JavaSparkContext;
      import org.apache.spark.api.java.function.Function;
      
      public class SparkTestApp{
      
          public static void main(String[] args) {
      
                  System.setProperty("hadoop.home.dir", "ANY_DIRECTORY");
      
          // Example
          // winutils.exe is copied to C:\winutil\bin\
          // System.setProperty("hadoop.home.dir", "C:\\winutil\\");
                  String logFile = "C:\\sample_log.log";
                  SparkConf conf = new SparkConf().setAppName("Simple Application").setMaster("local");
                  JavaSparkContext sc = new JavaSparkContext(conf);
                  JavaRDD logData = sc.textFile(logFile).cache();
      
                  long numAs = logData.filter(new Function<String, Boolean>() {
                      public Boolean call(String s) {
                              return s.contains("a");
                      }
                  }).count();
      
                  System.out.println("Lines with a: " + numAs);
      
          }
      

      }

      如果winutils.exe被复制到C:\winutil\bin\

      然后设置属性如下

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

      【讨论】:

        【解决方案6】:

        我在尝试从我的 Windows 笔记本电脑启动 spark-shell 时也遇到了这个问题。我解决了这个问题,它对我有用,希望它会有所帮助。这是我犯的一个非常小的错误 - 我将 winutils 可执行文件保存为“winutils.exe”,而不仅仅是 winutils。

        因此,当变量被解析时,它一直在解析为 winutils.exe.exe,它在 Hadoop 二进制文件中不存在。我删除了那个“.exe”并触发了shell,它起作用了。我建议你看看它被保存的名称。

        【讨论】:

          猜你喜欢
          • 2018-11-18
          • 2013-11-06
          • 2019-09-30
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 2021-07-29
          • 1970-01-01
          相关资源
          最近更新 更多