Apache Oozie Tutorial: Workflow-Diagramm, Zeitplaner
โก Intelligente Zusammenfassung
Apache Oozie ist der Workflow-Scheduler fรผr Hadoop, der abhรคngige Jobs als gerichtete azyklische Graphen ausfรผhrt und eine Workflow-Engine fรผr MapReduce-, Pig- und Hive-Aktionen mit einer Koordinierungs-Engine kombiniert, die von Zeit und Datenverfรผgbarkeit gesteuert wird.
Was ist Apache Oozie?
Apache Oozie ist ein Workflow-Scheduler fรผr HadoopEs handelt sich um ein System, das den Workflow abhรคngiger Jobs steuert. Hier kรถnnen Benutzer gerichtete azyklische Graphen von Workflows erstellen, die in Hadoop parallel und sequenziell ausgefรผhrt werden kรถnnen.
Es besteht aus zwei Teilen:
- Workflow-Engine: Die Aufgabe einer Workflow-Engine besteht darin, Workflows zu speichern und auszufรผhren, die aus Hadoop-Jobs bestehen, z. B. MapReduce, Schwein, Hive.
- Koordinator-Engine: Es fรผhrt Workflow-Jobs basierend auf vordefinierten Zeitplรคnen und der Verfรผgbarkeit von Daten aus.
Oozie ist skalierbar und kann die zeitgerechte Ausfรผhrung Tausender Workflows (jeweils bestehend aus Dutzenden von Jobs) in einem Hadoop-Cluster verwalten. Das folgende Diagramm zeigt die Position des Schedulers im Verhรคltnis zum Cluster und den von ihm gesteuerten Jobs.
Oozie ist zudem sehr flexibel. Jobs lassen sich problemlos starten, stoppen, pausieren und erneut ausfรผhren. Mit Oozie ist es besonders einfach, fehlgeschlagene Workflows erneut auszufรผhren. Man versteht sofort, wie schwierig es sein kann, verpasste oder fehlgeschlagene Jobs aufgrund von Ausfallzeiten oder Stรถrungen nachzuholen. Es ist sogar mรถglich, einen bestimmten fehlgeschlagenen Knoten zu รผberspringen.
Projektstatus: Apache Oozie wurde von der Apache Software Company eingestellt. Foundation im Februar 2025 und der Umzug zu Apache-Dachboden Die Entwicklung wurde im April 2025 abgeschlossen. Die finale Version ist weiterhin 5.2.1 vom Februar 2021, und das Quellcode-Repository ist nun schreibgeschรผtzt. Bestehende Cluster nutzen es weiterhin, weshalb die folgenden Funktionsweisen relevant sind. Neue Pipelines basieren jedoch รผblicherweise auf Apache Airflow.
Wie funktioniert Oozie?
Oozie lรคuft als Dienst im Cluster, und Clients รผbermitteln Workflow-Definitionen zur sofortigen oder spรคteren Verarbeitung.
Ein Oozie-Workflow besteht aus Aktionsknoten und Kontrollflussknoten.
Ein Aktionsknoten reprรคsentiert eine Workflow-Aufgabe, z. B. das Verschieben von Dateien nach HDFS, einen MapReduce-, Pig- oder Hive-Job ausfรผhren, Daten importieren mit Sqoopoder das Ausfรผhren eines Shell-Skripts oder eines in geschriebenen Programms Java.
Ein Kontrollflussknoten steuert die Workflow-Ausfรผhrung zwischen Aktionen, indem er Konstrukte wie bedingte Logik ermรถglicht, bei denen je nach Ergebnis eines vorherigen Aktionsknotens unterschiedliche Zweige verfolgt werden kรถnnen.
Startknoten, Endknoten und Fehlerknoten fallen unter diese Kategorie von Knoten.
- Knoten starten bezeichnet den Start des Workflow-Jobs.
- Endknoten signalisiert das Ende des Auftrags.
- Fehlerknoten Kennzeichnet das Auftreten eines Fehlers und die entsprechende Fehlermeldung, die ausgegeben werden soll.
Am Ende der Workflow-Ausfรผhrung verwendet Oozie einen HTTP-Callback, um den Client รผber den Workflow-Status zu informieren. Auch das Betreten oder Verlassen eines Aktionsknotens kann diesen Callback auslรถsen.
Oozie-Steuerungsknoten und Aktionstypen
Neben Start, Ende und Fehler unterstรผtzt das Workflow-XML eine kleine Anzahl von Kontrollknoten, die den Graphen formen.
- Entscheidung: Wertet einen Ausdruck aus und leitet den Workflow in einen von mehreren Zweigen weiter, das รquivalent einer Switch-Anweisung.
- Gabel: Teilt den Pfad auf, sodass zwei oder mehr Aktionen parallel ausgefรผhrt werden.
- beitreten: Wartet, bis jeder Zweig einer passenden Gabel fertig ist, bevor fortgefahren wird.
- tรถten: Beendet den Workflow sofort und protokolliert die Fehlermeldung.
Aktionsknoten decken die eigentliche Arbeit ab und jeder hat sein eigenes XML-Element:
- MapReduce, Pig, Hive und Sqoop Die Aktionen starten den entsprechenden Hadoop-Job.
- Java fรผhrt eine Hauptklasse auf dem Cluster aus; Schale und ssh Skripte ausfรผhren.
- fs fรผhrt HDFS-Haushaltsarbeiten durchping wie beispielsweise move, delete, mkdir und chmod.
- E-Mail benachrichtigt die Empfรคnger und Teilworkflow ruft eine weitere Workflow-Anwendung auf.
Beispiel-Workflow-Diagramm
Das untenstehende Diagramm traces ist ein kleiner Workflow vom Startknoten รผber eine MapReduce-Aktion bis entweder zum Endknoten oder zum Fehlerpfad, wenn die Aktion fehlschlรคgt.
Arten von Oozie-Jobs
Oozie beschreibt Arbeit auf drei Ebenen. Jede Ebene umschlieรt die darunterliegende, sodass ein Bรผndel letztendlich viele einzelne Arbeitsablรคufe steuert.
| Anstellungsart | Was es definiert | Ausgelรถst durch |
|---|---|---|
| Arbeitsablauf | Ein gerichteter azyklischer Graph von Aktions- und Kontrollknoten, geschrieben in workflow.xml | Manuelle Einreichung oder ein Koordinator |
| -Koordinator | Ein wiederkehrender Zeitplan fรผr einen Arbeitsablauf mit Startzeit, Endzeit und Hรคufigkeit | Verfรผgbarkeit von Uhrzeit und Eingangsdaten |
| Kombi-Ticket | Eine Sammlung von Koordinierungsanwendungen, die als eine einzige Datenpipeline verwaltet werden. | Ein fรผr alle Koordinatoren geltender Anstoรzeitpunkt |
In der Praxis ist diese Unterscheidung wichtig: Ein Workflow beantwortet die Frage โWas wird ausgefรผhrt?โ, ein Koordinator die Frage โWann wird es ausgefรผhrt?โ und ein Bundle die Frage โWas beginnt und endet gleichzeitig?โ.
Verpackung und Bereitstellung einer Oozie-Workflow-Anwendung
Eine Workflow-Anwendung besteht aus der Workflow-Definition und allen zugehรถrigen Ressourcen wie MapReduce-JAR-Dateien, Pig-Skripten usw. Anwendungen mรผssen einer einfachen Verzeichnisstruktur folgen und werden auf HDFS bereitgestellt, damit Oozie darauf zugreifen kann.
Nachfolgend ist eine beispielhafte Verzeichnisstruktur dargestellt:
<name of workflow>/
โโโ lib/
โ โโโ hadoop-examples.jar
โโโ workflow.xml
Die Datei workflow.xml (eine Workflow-Definitionsdatei) muss im Hauptverzeichnis (dem รผbergeordneten Verzeichnis mit dem Workflow-Namen) abgelegt werden. Das Verzeichnis lib enthรคlt JAR-Dateien mit MapReduce-Klassen. Eine Workflow-Anwendung, die diesem Aufbau entspricht, kann mit jedem Build-Tool, z. B. Ant oder Maven, erstellt werden.
Ein solcher Build muss mithilfe eines Befehls nach HDFS kopiert werden, zum Beispiel:
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Schritte zum Ausfรผhren eines Oozie-Workflow-Auftrags
In diesem Abschnitt erfahren Sie, wie Sie einen Workflow-Job ausfรผhren. Um dies auszufรผhren, verwenden wir das Oozie-Befehlszeilentool (ein Client-Programm, das mit dem Oozie-Server kommuniziert).
1. Exportiere die OOZIE_URL Umgebungsvariable, die dem Oozie-Befehl mitteilt, welchen Oozie-Server er verwenden soll (hier verwenden wir einen lokal laufenden):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Fรผhren Sie den Workflow-Job wie folgt aus:
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Die Option -config bezieht sich auf eine lokale Java Properties-Datei mit Definitionen fรผr die Parameter in der Workflow-XML-Datei sowie oozie.wf.application.path, die Oozie den Speicherort der Workflow-Anwendung in HDFS mitteilt.
Beispielinhalt der Eigenschaftendatei:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Den Status des Workflow-Auftrags abrufen.
Der Status eines Workflow-Jobs kann mit dem Unterbefehl 'job' und der Option '-info' angezeigt werden, wobei nach '-info' die Job-ID angegeben wird.
e.g., % oozie job -info <job id>
Die Ausgabe zeigt einen Status an, der entweder LรUFT, BEENDET oder ERFOLGREICH ist.
4. Die Ergebnisse einer erfolgreichen Workflow-Ausfรผhrung kรถnnen mit einem Hadoop-Befehl wie dem folgenden angezeigt werden:
% hadoop fs -cat <location of result>
Warum Oozie verwenden?
Der Hauptzweck von Oozie besteht darin, verschiedene Arten von Jobs zu verwalten, die in einem Hadoop-System verarbeitet werden.
Abhรคngigkeiten zwischen Jobs werden vom Benutzer in Form von gerichteten azyklischen Graphen (DAGs) definiert. Oozie verarbeitet diese Informationen und sorgt fรผr die korrekte Ausfรผhrung der Jobs in der im Workflow festgelegten Reihenfolge. Dadurch spart der Benutzer Zeit bei der Workflow-Verwaltung. Zusรคtzlich bietet Oozie die Mรถglichkeit, die Ausfรผhrungshรคufigkeit einzelner Jobs festzulegen.
Merkmale von Oozie
- Oozie verfรผgt รผber eine Client-API und eine Kommandozeilenschnittstelle, mit denen Jobs gestartet, gesteuert und รผberwacht werden kรถnnen. Java Anwendung.
- Mithilfe der Web Service APIs lassen sich Auftrรคge von รผberall aus steuern.
- Oozie bietet die Mรถglichkeit, Jobs auszufรผhren, die regelmรครig laufen sollen.
- Oozie bietet die Mรถglichkeit, nach Abschluss von Auftrรคgen E-Mail-Benachrichtigungen zu versenden.
Oozie vs Apache Airflow
Da Oozie nicht mehr weiterentwickelt wird, vergleichen die meisten Teams, die heute einen Scheduler evaluieren, ihre bestehende Lรถsung mit Apache Airflow. Die beiden Tools lรถsen dasselbe Problem aus unterschiedlichen Perspektiven.
| Aspekt | Apache Oozie | Apache-Luftstrom |
|---|---|---|
| Definitionssprache | Workflows, geschrieben als XML | DAGs geschrieben als Python Code |
| Geltungsbereich | Basierend auf Hadoop-Aktionen wie MapReduce, Pig, Hive und Sqoop | Universell einsetzbar, mit Operatoren fรผr Cloud-Dienste, Datenbanken und Container |
| Planung | Koordinatorentรคtigkeiten werden von Zeit und Datenverfรผgbarkeit bestimmt | Zeitintervalle planen plus Sensoren, die auf รคuรere Bedingungen warten |
| Projekt-Status | Im Jahr 2025 in den Apache Attic verlegt; endgรผltige Version 5.2.1 | Aktiv weiterentwickeltes Apache-Top-Level-Projekt |
Oozie bleibt die einfachere Option auf einem Cluster, auf dem es bereits lรคuft, da die Aktionen eins zu eins Hadoop-Komponenten zugeordnet werden kรถnnen. Airflow ist die praktische Wahl fรผr alles Neue, insbesondere wenn eine Pipeline รผber Hadoop hinausgeht.


