Hadoop Streaming - Dateifehler konnte nicht gefunden werden

8

Ich versuche einen hadoop-streaming-Python-Job auszuführen.

%Vor%

Ich habe sichergestellt, dass mapper.py über alle Berechtigungen verfügt. Es ist falsch zu sagen

%Vor%

Ich habe versucht, mapper.py in hdfs zu kopieren und den gleichen Link hdfs: //localhost/mapper.py zu geben, der auch nicht funktioniert! Irgendwelche Gedanken, wie man diesen Fehler beheben kann?.

    
vkris 02.12.2010, 20:56
quelle

8 Antworten

6

Wenn Sie sich das Beispiel auf der HadoopStreaming Wiki-Seite ansehen, scheint es, dass Sie

ändern sollten %Vor%

bis

%Vor%

seit "ausgelieferte Dateien gehen in das Arbeitsverzeichnis". Sie müssen möglicherweise auch den Python-Interpreter direkt angeben:

%Vor%     
Bkkbrad 03.12.2010 02:46
quelle
3

Ihr Problem ist höchstwahrscheinlich, dass die ausführbare Python-Datei nicht auf den Slaves existiert (auf denen TaskTracker läuft). Java wird die gleiche Fehlermeldung geben.

Installieren Sie es überall dort, wo es verwendet wird. Un Ihre Datei können Sie Shebang verwenden, wie Sie wahrscheinlich schon tun:

%Vor%

Stellen Sie sicher, dass der Pfad nach dem Shebang derselbe ist, in dem Python auf den TaskTrackers installiert ist.

    
gphilip 27.11.2012 19:32
quelle
2

Ein anderes hinterhältiges Ding kann das verursachen. Wenn Ihre Zeilenenden im Skript DOS-artig sind, dann könnte Ihre erste Zeile (die "Shebang-Zeile") mit bloßem Auge so aussehen:

%Vor%

, aber seine Bytes sehen für den Kernel so aus, wenn er versucht, Ihr Skript auszuführen:

%Vor%

Es sucht nach einer ausführbaren Datei namens "/usr/bin/python\r" , die es nicht finden kann, also stirbt es mit "No such file or directory" .

Das hat mich heute gebissen, wieder , also musste ich es irgendwo auf SO aufschreiben.

    
Ken Williams 17.10.2013 19:19
quelle
1

Ich habe genau das gleiche Problem in einem CDH4-Hadoop-Cluster mit einem Streaming-Python-Job festgestellt. Der Trick besteht darin, Ihre Mapper / Reducer-Datei als erste Zeile hinzuzufügen:

%Vor%

Damit wird Python im aktuellen Arbeitsverzeichnis aussehen und es sollte dann ausgeführt werden können, stellen Sie auch sicher, dass Ihr Shebang korrekt ist.

    
DrDee 23.01.2013 00:49
quelle
0

Hat Ihr mapper.py eine Ausführungsberechtigung? Wenn nicht, dann brauchst du es.

%Vor%

Hadoop forkiert und führt das Skript aus, bevor es in std schreibt / liest, so dass Sie es ausführen müssen, damit es ausgeführt werden kann.

    
Joe Stein 04.12.2010 01:04
quelle
0

Ich habe gerade den gleichen Fehler erhalten, wenn mein Mapper eine leere oder leere Zeichenfolge zurückgibt. Also musste ich den Wert überprüfen:

%Vor%     
Brig 10.12.2010 18:18
quelle
0

Datei nicht gefunden Fehler bedeutet manchmal nicht "Datei nicht gefunden", stattdessen bedeutet es "Kann dieses Skript nicht ausführen".

Wenn ich das weiß, habe ich Probleme wie diese gelöst, wenn Sie mit Problemen (kein Java) beim Streaming konfrontiert sind, empfehle ich Ihnen, dieser Checkliste zu folgen:

  1. Laufen die Skripte? Starten Sie nicht den Interpreter, d. H. python myScript.py macht es startfähig als ./myScript.py Dies ist die Art und Weise wie das Streaming Ihr Skript aufruft.
  2. Verwenden Sie -verbose , um zu sehen, was in das Jar hineingeht, das in den Container implementiert wird, manchmal diese Hilfe.
  3. Innerhalb der Container-Skripts sind Symlinks keine echten Dateien.
  4. Dateien, die mit -file verschoben werden, befinden sich nicht in Ordnern. -mapper folder/script.py oder -reducer folder/script.py werden als script.py behandelt
  5. Container und alles, was darin enthalten ist, wird nach Abschluss des Jobs gelöscht. Wenn Sie sehen möchten, was in einem Container passiert, verschieben Sie es in HDFS, IE: ersetzen Sie den Mapper oder Reducer durch ein .sh-Skript, das die Arbeit erledigt / li>

Diese Checkliste hat mir sehr geholfen, ich hoffe, dass sie auch für Sie nützlich sein kann.

Hier folgt das klassische Protokoll mit der mehrdeutigen Fehlermeldung.

Es stimmt, es kann das Programm nicht ausführen.

%Vor%

Es ist der Grund, die Lüge.

%Vor%

Lesen Sie dies:

%Vor%

Es ist eine Lüge, Datei existiert, wenn -verbose es in die Verpackungsliste zeigt.

%Vor%     
ozw1z5rd 01.10.2016 13:44
quelle
0

Ich habe dasselbe Problem beim Ausführen von Map Reduce mit Python-Code gesehen. Die Lösung ist: Wir müssen "Datei" auch vor dem Mapper und Reducer angeben.

Hier ist der Befehl:

%Vor%     
Harkirat Singh 16.01.2018 13:34
quelle

Tags und Links