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.

  • ๐Ÿ”˜ Zwei Motoren: Eine Workflow-Engine fรผhrt Hadoop-Jobgraphen aus; eine Koordinator-Engine lรถst sie planmรครŸig oder bei Dateneingang aus.
  • โ˜‘๏ธ Knotentypen: Aktionsknoten fรผhren Arbeiten aus; Kontrollknoten wie Entscheidungs-, Verzweigungs- und Zusammenfรผhrungsknoten lenken den Pfad.
  • โœ… Drei Jobarten: Workflow-, Koordinator- und Bรผndelungsjobs bilden zusammen eine vollstรคndige Datenpipeline.
  • ๐Ÿงช Einsatz: Eine Workflow-Anwendung ist ein Verzeichnis, das workflow.xml und einen lib-Ordner enthรคlt und in HDFS kopiert wird.
  • ๏ธ Befehlszeile: Set OOZIE_URL, reichen Sie den Befehl mit oozie job -run ein und rufen Sie dann oozie job -info auf, bis die Meldung SUCCEEDED erscheint.
  • โš ๏ธ Projektstatus: Oozie wurde 2025 in den Apache Attic verbannt, daher verwenden neue Pipelines in der Regel Apache Airflow.

Apache Oozie-Tutorial: Workflow, Koordinator-Jobs und Hadoop-Scheduling

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.

Apache Oozie Workflow-Scheduler, der abhรคngige Hadoop-Jobs als gerichteten azyklischen Graphen ausfรผhrt

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.

Beispiel eines Oozie-Workflow-Diagramms mit Startknoten, Aktionsknoten, Fehlerbehandlung und Endknoten

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.

Hรคufig gestellte Fragen

Nein. Die Apache-Software Foundation Oozie wurde im Februar 2025 eingestellt und der Umzug nach Attic im April 2025 abgeschlossen. Die letzte Version ist 5.2.1 vom Februar 2021, und das Repository ist schreibgeschรผtzt, die Dokumentation bleibt jedoch online.

KI-Assistenten wandeln eine beschriebene Pipeline in eine Scheduler-Konfiguration um, erklรคren, warum ein Job-Graph blockiert wurde, und fassen Cluster-Logs zu einer wahrscheinlichen Ursache zusammen. Nรผtzlich fรผr den ersten Entwurf und die Priorisierung, nicht jedoch zur Genehmigung eines Produktionsplans.

Copilot erstellt schnell plausible workflow.xml-Dateien, verwendet aber hรคufig falsche Elementnamen oder die falsche Schemaversion. Validieren Sie das generierte XML anhand des Schemas 5.2.1 und fรผhren Sie es zunรคchst auf einem Testcluster aus.

Ein Koordinator kombiniert Frequenz, Start- und Endzeit mit Datensatzdefinitionen. Er wird nur dann ausgefรผhrt, wenn die Uhr das nรคchste Intervall erreicht und alle deklarierten Eingabedatensรคtze in HDFS vorhanden sind; verspรคtete Daten verzรถgern daher die Ausfรผhrung.

Senden Sie den Auftrag erneut mit der Aktion โ€žWiederholenโ€œ und der ursprรผnglichen Auftrags-ID ein und geben Sie die zu รผberspringenden oder zu wiederholenden Knoten an. Oozie verwendet die abgeschlossenen Aktionen wieder, sodass nur der verbleibende Teil des Graphen ausgefรผhrt wird.

PREP bedeutet, dass der Job angenommen, aber noch nicht gestartet wurde, รผblicherweise weil der Anwendungspfad in HDFS falsch ist oder der Materialisierungszeitpunkt noch nicht erreicht wurde. SUSPENDED bedeutet, dass der Job pausiert wurde oder eine Aktion fehlgeschlagen ist und der Workflow angehalten wurde.

Der Server lรคuft mit eigenem Principal und Keytab, und Clients authentifizieren sich รผber SPNEGO via HTTP. Workflows enthalten Delegierungstoken, sodass jede Aktion HDFS und YARN als der einreichende Benutzer und nicht als der Server erreicht.

Cron fรผhrt einen Befehl aus und vergisst ihn dann. Ein Scheduler tracks verwaltet Abhรคngigkeiten zwischen Jobs, wartet auf das Eintreffen von Eingabedaten, protokolliert den Status jeder Aktion und ermรถglicht es Ihnen, nur den fehlgeschlagenen Teil erneut auszufรผhren.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: