2016-01-09 13 views
8

私はこれに非常に似た投稿があることを知っています(Failed to locate the winutils binary in the hadoop binary path)。しかし、提案されたすべてのステップを試してみました。スパーク1.6 - hadoopバイナリパスでwinutilsバイナリを見つけることができません

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

しかし、このエラーが表示されて保持します: enter image description here私は特にこのコードを使用して、このページhttp://spark.apache.org/docs/latest/streaming-programming-guide.htmlにチュートリアルを実行するには、Windows 7上でのApacheスパークバージョン1.6.0を使用しようとしている

この記事 Failed to locate the winutils binary in the hadoop binary path

を読んだ後、私はwinutils.exeファイルを必要に応じて実現ので、私はHadoopのバイナリをダウンロードしています私は、コードをしようとすると、まだ表示される%HADOOP_HOME%の

それでも同じエラー:これで2.6.0は、HADOOP_HOMEという環境変数に定義:

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

をし、このようなパスの上に置きました。誰もこれを解決する方法を知っていますか?

+1

などのsetPropertyあなたはHADOOP_HOME = Cをやってはいけません:\ Users \ユーザーGERAL \デスクトップ\のHadoopの-2.6.0%HADOOP_HOME%\ binを追加します。 PATH変数 –

+0

@ JD_247はうまくいきませんでした。どうもありがとうございます。 –

+0

@ JD_247あなたのコメントは私の魅力のように働いていました。 :) –

答えて

15

WindowsでSparkをHadoopで実行している場合は、Windowsのhadoopインストールが正しくインストールされていることを確認する必要があります。 sparkを実行するには、あなたのhadoopホームディレクトリのbinフォルダにwinutils.exeとwinutils.dllが必要です。

私が最初にこれをしようとするあなたを頼む:

1) You can download .dll and .exe fils from the bundle in below link. 

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

2) Copy winutils.exe and winutils.dll from that folder to your $HADOOP_HOME/bin. 

3) Set the HADOOP_HOME either in your spark-env.sh or at the command, and add HADOOP_HOME/bin to PATH. 

してから実行してみてください。

ハーフープインストールのヘルプについて助けが必要な場合は、素晴らしいリンクがあります。試してみてください。

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

しかし、それは待つことができます。あなたは最初のいくつかのステップを試すことができます。

+0

これは魅力的に機能しました。ちょっとした追加を加えたいだけです。デフォルトでシェルは 'HADOOP_HOME/bin'の中を検索していますので、' HADOOP_HOME/bin/bin'を 'HADOOP_HOME/bin /'に設定すると、 'HADOOP_HOME/bin/bin'内の' winutils.exe'を検索します。エラーを投げる。 –

1

あなたがするHADOOP_HOME環境変数を設定しようとすることができSystem.setProperty("hadoop.home.dir", "Desktop\bin");

+0

'System.setProperty(" hadoop.home.dir "、" Desktop \ bin ");' –

+0

@PragyadityaDasをメインに書く場所 – MohamedAbbas

0

そしてここHadoop Binからbinファイルをダウンロードします。

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

代わりの

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

しようとしたとき、私はあまりにもこの問題に直面しました私のWindowsラップトップからスパークシェルを起動します。私はこれを解決し、私のために働いた、それが助けてくれることを願っています。それは私が作った非常に小さな間違いです - 私はwinutilsの代わりに "winutils.exe"としてwinutilsの実行可能ファイルを保存しました。

したがって、変数が解決されると、Hadoopバイナリには存在しないwinutils.exe.exeに解決されています。私はその ".exe"を削除し、シェルを起動し、それは働いた。私はそれが保存されている名前を見てお勧めします。

0

次のエラーは、Sparkアプリケーションの実行中にクラスパスにwinutilsバイナリがないためです。 WinutilsはHadoopエコシステムの一部であり、Sparkには含まれていません。例外がスローされた後でも、アプリケーションの実際の機能が正しく動作することがあります。しかし、不必要な問題を避けるために、それを適所に置く方が良いです。エラーを回避するには、winutils.exeバイナリをダウンロードし、クラスパスに追加します。 winutils.exeC:\winutil\bin\

にコピーされている場合は

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); 

    } 

}

その後、

以下
System.setProperty("hadoop.home.dir", "C:\\winutil\\"); 
関連する問題