2014-05-13 8 views
5

Ich bin ein Bash Shell-Skript mit Oozie Editor in Hue aufrufen.Running Shell-Skript von Oozie über Hue

verwenden ich die Schale Aktion im Workflow und versuchte unter verschiedenen Optionen in Shell-Befehl:

  1. der Shell-Skript mit Uploaded
  2. Gave Pfad lokalen Verzeichnisses ‚eine Datei auswählen‘, falls vorhanden, Shell-Skript
  3. ist
  4. Gave HDFS Pfad, in dem Shell-Skript vorhanden ist

Aber alle diese Optionen gab folgenden Fehler:

Cannot run program "sec_test_oozie.sh" (in directory "/data/hadoop/yarn/local/usercache/user/appcache/application_1399542362142_0086/container_1399542362142_0086_01_000002"): java.io.IOException: error=2, No such file or directory

Wie sollte ich den Shell-Skript-Ausführungsbefehl geben? Wo sollte sich die Shell-Skriptdatei befinden?

+0

Suche nach _java.io.IOException: error = 2, Keine solche Datei oder Verzeichnis_ – devnull

+0

Haben Sie eine Lösung dafür gefunden, habe ich das gleiche Problem. – CruncherBigData

+0

@ CruncherBigData bitte werfen Sie einen Blick auf SergioRG Lösung und die Erweiterung, die ich schrieb. Der Fehler ist sehr verwirrend und hat mir Kopfschmerzen bereitet. –

Antwort

0

Haben Sie sec_test_oozie.sh mit dem Hue File Browser bearbeitet? Abhängig von Ihrer Hue-Version könnte es beschädigt sein: hue-list

+0

Nein Romain ... Ich habe die Skriptdatei von lokal über die Option 'Datei hochladen' hochgeladen und versucht, direkt den HDFS-Pfad anzugeben, in dem sich das Shell-Skript befindet. –

5

Sie müssen Datei hinzufügen "sec_test_oozie.sh" in Oozie Shell-Schritt. In Dateien hinzufügen

+0

Der Fehler ist verwirrend, er sagt keine solche Datei oder kein Verzeichnis, wenn wir die .sh-Datei bereits hochgeladen haben. – sumit

+2

Danke Sergio. Ich verstehe nicht, welche dummen Leute diese UI gemacht haben und leider benutzt unsere Firma diese. – blueskin

0

Ich stieß auf das gleiche Problem, und das Problem war, dass das Skript einige irrelevante Zeile echote, während der Workflow versuchte, es als eine Eigenschaft Zeile zu analysieren. Oozie gab eine sehr irrelevante Fehlermeldung von java.io.IOException: error=2, No such file or directory, die nur Verwirrung verursachte.

  1. Sie müssen <file> verwenden, um Ihr Skript hinzuzufügen.
  2. Wenn Sie verwendet <capture-output/> dann müssen Sie sicherstellen, dass Ihr Skript druckt nur „Schlüssel = Wert“ Linien, wie Java-Eigenschaften, sonst werden Sie den Fehler erhalten Sie sehen java.io.IOException: error=2, No such file or directory mit einigen Weg zu zeigen .../yarn/local/usercache/...
5

I denke, Sie erstellen die Datei von Windows-Maschine, die zusätzliche Zeilenumbrüche Zeichen hinzufügen.Sie müssen die Shell-Skript-Datei in Unix-Format konvertieren.Ich konfrontiert auch das gleiche Problem.Dann erstellte ich die Datei von einem Linux-System und es begann zu arbeiten. Der Fehler ist irreführend.

+0

Sie sind meine Lösung. – ChikuMiku

-1

"Keine solche Datei oder Verzeichnis" oozie kann die Datei nicht finden. Überprüfen Sie die Einstellung AddPath in dem Befehl.

In der Edit-Knoten Seciton, erhalten Sie die Oozie-Anwendung hdfs Pfad.

Laden Sie das Shell-Skript in hdfs oozie Anwendungspfad.

Geben Sie im Schritt "Oozie Edit Node" Shell-Befehl - den Namen des Shell-Skripts ein, der hochgeladen wird.

Darunter wäre die Option AddPath, dann Dateien hinzufügen, fügen Sie das Shell-Skript, das im hdfs-Pfad hochgeladen wurde.

-1

Entfernen der #!/Bin/bash von meiner Shell-Skript half mir

2

ich die @SergioRG Antwort erweitern möchten. Oozie, zumindest mit Clouderas Hue-Schnittstelle, ist sehr kontraintuitiv.

  1. die Datei auf dem HDFS-Dateisystem in einem Ordner zugänglich Oozie
  2. die Datei in dem Shell-Befehlsfeld angezeigt werden soll:

    eine Skriptdatei ausführen zu können, sollten drei Bedingungen erfüllt sein

  3. Die Datei sollte mit jeder anderen abhängigen Datei im Teil "Files +" der Taskkarte hinzugefügt werden.

How to add files in the Oozie Hue interface

Ich frage mich, warum sie nicht standardmäßig rufen die Skriptdatei hinzufügen, haben Sie.

Bearbeiten: Bitte überprüfen Sie auch erweiterte Optionen (den Gang in der linken oberen Ecke), wenn Sie die Pfadvariable einstellen müssen (zB PATH =/usr/local/bin:/usr/bin).