2017-05-27 5 views
0

Ich bin immer noch neu mit hadoop und ich habe versucht, this example zu arbeiten.Hadoop-Streaming Ungültige DFS-Verzeichnisname

Ich konnte Hadoop einrichten und wordcountmapreduce Beispiel ausführen und alles ist in Ordnung. Jedoch habe ich eine java.lang.IllegalArgumentException: Invalid DFS directory name Ausnahme bin immer, wenn ich einen hadoopstreaming command auf windows 7 laufen hadoop 2.6.0

Hier verwenden ist mein Befehl:

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input input/* -output output 

Wenn ich den Befehl von etwa Ordner d:\hadoop der Fehler ausführen angezeigt wird:

java.lang.IllegalArgumentException: Invalid DFS directory name /d:/hadoop 

Das Ausgabeverzeichnis wird erstellt, bevor der Fehler angezeigt wird und der Job fehlschlägt.

Ich habe versucht, nach Befehlen zu suchen, um den Speicherort der verteilten Datei festzulegen, aber ich habe nichts dergleichen gefunden.

Jeder Rat würde geschätzt werden.

Antwort

0

Eingangs- und Ausgangspfade sollten hdfs sein und nicht der Pfad . Sie bieten Eingangsweg als d:/hadoop, welche die ist local filesystem

Sie den Pfad in hdfs (sie in /user/<hadoop username> in der Regel wohnen) haben finden

Angenommen, Ihre hadoop userAhmed ist, sollte folgenden Befehl Anwendung geben Sie alle Verzeichnisse und Dateien in hdfs Hause

hadoop dfs -ls 

entspricht

hadoop dfs -ls /user/Ahmed/ 

So die hdfs Speicherort der Datei verfolgen und zu -input argument als Pass (/user/Ahmed/input Annahme, daß der Weg)

hadoop jar %HADOOP_PREFIX%\share\hadoop\tools\lib\hadoop-streaming-2.6.0.jar -mapper mapper.php -reducer reducer.php -input /user/Ahmed/input 
+0

Danke Ramesh, aber ich bekomme immer noch den gleichen Fehler. Ich stellte sicher, dass die Dateien im Pfad hdfs hinzugefügt wurden, ich kann sie aufgelistet sehen, wenn ich "hadoop dfs -ls" ausführe, und ich stellte sicher, dass die Eingabedatei relativ zu hdfs Pfad gesetzt wurde. Aber ich bekomme immer noch einen ungültigen Pfad und es gibt das aktuelle Verzeichnis aus, in dem ich mich befinde. Ich habe versucht, der Eingabedatei einen falschen Pfad zu geben und es gibt einen anderen Fehler, so dass meine Eingabedatei angezeigt wird. Ich denke, das bedeutet, dass es etwas anderes ist? –

+0

können Sie Ihre Frage mit allen Schritten aktualisieren, die Sie im obigen Kommentar ausgeführt haben? Damit ich mir die Details ansehen kann. Und wird 'hadoop-streaming-2.6.0.jar' von dir erstellt? –

+0

Nein Ich habe eine bereits kompilierte Hadoop-Datei für Windows heruntergeladen und sie hatte alle JAR-Dateien einschließlich Wordcount-Beispiel und Streaming-Jar.Ich habe wirklich keine zusätzlichen Schritte hinzugefügt, ich habe nur sichergestellt, dass der Eingabe- und Ausgabepfad hdfs-Pfad ist, wie Sie auf –

0

Dank ich bemerkte Ramesh, dass meine hdfs Befehle auf dem aktuellen Verzeichnis nicht auf dem hdfs Standort ausgeführt wurden . Also Befehle wie "hdfs dfs -ls /", wo das Verzeichnis auf dem ich bin nicht auf dem hadoop verteilten Dateisystem aufgelistet ist.

Es stellt sich heraus, ein Problem mit der Konfiguration. Ich musste sicherstellen, dass fs.defaultFS in core-site.xml und hdfs-site.xml richtig eingestellt ist

+0

Schön zu hören, dass du es herausgefunden hast :) –