Spark 1.6 - Не удалось найти двоичный файл winutils в двоичном пути hadoop

Я знаю, что этот пост очень похож на этот (не удалось найти двоичный файл winutils в двоичном пути hadoop), однако я пробовал каждый предложенный шаг, и по-прежнему появляется та же ошибка.

Я пытаюсь использовать Apache Spark версии 1.6.0 в Windows 7 для выполнения учебного руководства на этой странице http://spark.apache.org/docs/latest/streaming-programming-guide.html, в частности, используя этот код:

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

Однако эта ошибка продолжает появляться: enter image description here

После прочтения этого сообщения не удалось найти двоичный файл winutils в двоичном пути hadoop

Я понял, что мне нужен файл winutils.exe, поэтому я скачал с ним двоичный файл hadoop 2.6.0, определив переменную среды с именем HADOOP_HOME:

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

и поместил его в путь следующим образом:% HADOOP_HOME%

Все же та же самая ошибка все еще появляется, когда я пытаюсь код. Кто-нибудь знает как это решить?

Ответ 1

Если вы используете Spark в Windows с Hadoop, вам необходимо убедиться, что установка Windows hadoop установлена правильно. для запуска spark вам нужно иметь winutils.exe и winutils.dll в папке bin вашего домашнего каталога hadoop.

Я бы попросил вас попробовать это сначала:

1) Вы можете скачать файлы .dll и .exe из пакета по ссылке ниже.

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

2) Скопируйте winutils.exe и winutils.dll из этой папки в вашу папку $ HADOOP_HOME/bin.

3) Установите HADOOP_HOME либо в вашем spark-env.sh, либо по команде, и добавьте HADOOP_HOME/bin в PATH.

а затем попробуйте запустить.

Если вам нужна помощь в установке Hadoop, есть хорошая ссылка, вы можете попробовать ее.

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

Но это может подождать. Вы можете попробовать первые несколько шагов.

Ответ 2

Загрузите файл bin здесь Hadoop Bin, затем System.setProperty("hadoop.home.dir", "Desktop\bin");

Ответ 3

вы можете попробовать установить переменную среды HADOOP_HOME:

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

вместо

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

Ответ 4

Я тоже столкнулся с этой проблемой при попытке запустить искровую оболочку с моего ноутбука Windows. Я решил это, и это сработало для меня, надеюсь, что это поможет. Это была небольшая ошибка, которую я сделал - я сохранил исполняемый файл winutils как "winutils.exe", а не только winutils.

Итак, когда переменная решена, она разрешает winutils.exe.exe, которая нигде не существует в двоичных файлах Hadoop. Я удалил этот ".exe" и вызвал оболочку, она сработала. Я предлагаю вам взглянуть на имя, которое оно было сохранено.

Ответ 5

Следующая ошибка связана с отсутствием двоичного файла winutils в пути к классам при запуске приложения Spark. 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\

затем setProperty, как показано ниже

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

Ответ 6

Установите JDK 1.8, загрузите Spark Binary с Apache Spark & Winutils из Git-репо

Установите путь к пользовательским переменным для 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