Oozie Tutorial: Erfahren Sie, wie Sie Ihre Hadoop-Jobs planen



Apache Oozie Tutorial: Oozie ist ein Workflow-Scheduler-System zum Verwalten von Hadoop-Jobs. Es ist ein skalierbares, zuverlässiges und erweiterbares System.

Bevor Sie mit diesem Apache Oozie-Tutorial beginnen, sollten Sie wissen, wo das Scheduler-System verwendet wird. In Echtzeitszenarien ist ein Job von anderen Jobs abhängig, z. B. kann die Ausgabe einer MapReduce-Aufgabe zur weiteren Verarbeitung an den Hive-Job übergeben werden. Das nächste Szenario kann darin bestehen, eine Reihe von Aufgaben auf der Grundlage der Zeit wie täglich, wöchentlich, monatlich oder basierend auf der Datenverfügbarkeit zu planen. Apache Oozie bietet Ihnen die Möglichkeit, solche Szenarien einfach zu handhaben. Deshalb ist Apache Oozie ein wichtiger Bestandteil von .

In diesem Apache Oozie-Tutorial-Blog werden wir Folgendes behandeln:





  • Apache Oozie Einführung
  • Oozie Workflow
  • Oozie-Koordinator
  • Oozie Bundle
  • Word Count Workflow Job
  • Zeitbasierter Job für den Koordinator der Wortzählung

Wir beginnen dieses Oozie-Tutorial mit der Einführung von Apache Oozie. Anschließend werden wir die Arten von Jobs verstehen, die mit Apache Oozie erstellt und ausgeführt werden können.

Apache Oozie Tutorial: Einführung in Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie ist ein Planungssystem zum Verwalten und Ausführen von Hadoop-Jobs in einer verteilten Umgebung. Wir können eine gewünschte Pipeline erstellen, indem wir eine andere Art von Aufgaben kombinieren. Dies kann Ihre Hive-, Pig-, Sqoop- oder MapReduce-Aufgabe sein. Mit Apache Oozie können Sie auch Ihre Jobs planen. Innerhalb einer Abfolge der Aufgabe können auch zwei oder mehr Jobs so programmiert werden, dass sie parallel zueinander ausgeführt werden. Es ist ein skalierbares, zuverlässiges und erweiterbares System.



Oozie ist eine Open Source Java-Webanwendung, die für das Auslösen der Workflow-Aktionen verantwortlich ist. Es verwendet wiederum die Hadoop-Ausführungs-Engine, um die Aufgaben auszuführen.

Apache Oozie erkennt die Erledigung von Aufgaben durch Rückruf und Abfrage. Wenn Oozie eine Aufgabe startet, stellt es der Aufgabe eine eindeutige HTTP-Rückruf-URL zur Verfügung und benachrichtigt diese URL, wenn die Aufgabe abgeschlossen ist. Wenn die Aufgabe die Rückruf-URL nicht aufruft, kann Oozie die Aufgabe zum Abschluss abfragen.

Es gibt drei Arten von Jobs in Apache Oozie:



  • Oozie Workflow-Jobs & minus Dies sind Directed Acyclic Graphs (DAGs), die eine Folge von auszuführenden Aktionen angeben.
  • Oozie Coordinator Jobs & minus Diese bestehen aus Workflow-Jobs, die durch Zeit- und Datenverfügbarkeit ausgelöst werden.
  • Oozie-Bündel & minus Diese können als Paket mehrerer Koordinatoren und Workflow-Jobs bezeichnet werden.

Lassen Sie uns nun alle diese Jobs einzeln verstehen.

Apache Oozie Tutorial: Oozie Workflow

Der Workflow ist eine Folge von Aktionen, die in einem Direct Acyclic Graph (DAG) angeordnet sind. Die Aktionen sind voneinander abhängig, da die nächste Aktion erst nach der Ausgabe der aktuellen Aktion ausgeführt werden kann. Eine Workflow-Aktion kann eine Pig-Aktion, eine Hive-Aktion, eine MapReduce-Aktion, eine Shell-Aktion, eine Java-Aktion usw. sein. Es kann Entscheidungsbäume geben, um zu entscheiden, wie und unter welchen Bedingungen ein Job ausgeführt werden soll.

Wir können verschiedene Arten von Aktionen basierend auf dem Job erstellen und jede Art von Aktion kann ihre eigenen Arten von Tags haben.Der Workflow und die Skripte oder Jars sollten vor dem Ausführen des Workflows in den HDFS-Pfad gestellt werden.

Befehl: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Um den Status des Jobs zu überprüfen, können Sie zur Oozie-Webkonsole gehen, d. H. http: // Hostname: 11000 . Durch Klicken auf den Job sehen Sie den Status des Jobs.

Einstiegs-Python-Entwickler-Lebenslauf

In Szenarien, in denen mehrere Jobs gleichzeitig ausgeführt werden sollen, können wir verwenden Gabel . Wann immer wir Fork verwenden, müssen wir Join als Endknoten für Fork verwenden. Für jede Gabel sollte eine Verbindung vorhanden sein. Join geht davon aus, dass alle Knoten, die parallel ausgeführt werden, ein untergeordnetes Element einer einzelnen Verzweigung sind. Zum Beispiel können wir zwei Tabellen gleichzeitig parallel erstellen.

Wenn wir eine Aktion basierend auf der Ausgabe der Entscheidung ausführen möchten, können wir Entscheidungstags hinzufügen. Wenn wir beispielsweise die Hive-Tabelle bereits haben, müssen wir sie nicht erneut erstellen. In dieser Situation können wir ein Entscheidungs-Tag hinzufügen, um die Schritte zum Erstellen einer Tabelle nicht auszuführen, wenn die Tabelle bereits vorhanden ist. Entscheidungsknoten haben ein Switch-Tag ähnlich dem Switch-Fall.

Der Wert von Job-Tracker, Name-Knoten, Skript und Parameter kann direkt übergeben werden. Dies wird jedoch schwierig zu handhaben. Hier ist eine Konfigurationsdatei (d. H. Eine Eigenschaftendatei) nützlich.

Apache Oozie Tutorial: Oozie-Koordinator

Sie können komplexe Workflows sowie Workflows planen, die regelmäßig mit Coordinator geplant werden. Oozie Coordinators löst die Workflow-Jobs basierend auf Zeit-, Daten- oder Ereignisprädikaten aus. Die Workflows innerhalb des Jobkoordinators beginnen, wenn die angegebene Bedingung erfüllt ist.

Für die Koordinatorjobs sind folgende Definitionen erforderlich:

  • Start & minus Start datetime für den Job.
  • Ende & minus Datum / Uhrzeit für den Job beenden.
  • Zeitzone & minus Zeitzone der Koordinatoranwendung.
  • Frequenz & minus Die Häufigkeit in Minuten für die Ausführung der Jobs.

Für Steuerinformationen stehen einige weitere Eigenschaften zur Verfügung:

  • Auszeit & minus Die maximale Zeit in Minuten, für die eine Aktion wartet, um die zusätzlichen Bedingungen zu erfüllen, bevor sie verworfen wird. 0 gibt an, dass, wenn zum Zeitpunkt der Aktionsmaterialisierung nicht alle Eingabeereignisse erfüllt sind, die Aktion sofort eine Zeitüberschreitung aufweisen sollte. -1 zeigt an, dass keine Zeitüberschreitung vorliegt. Die Aktion wird für immer warten. Der Standardwert ist -1.
  • Parallelität & minus Die maximale Anzahl von Aktionen für einen Job, die parallel ausgeführt werden können. Der Standardwert ist 1.
  • Ausführung - Gibt die Ausführungsreihenfolge an, wenn mehrere Instanzen des Koordinatorjobs ihre Ausführungskriterien erfüllt haben. Es kann sein:
    • FIFO (Standard)
    • LIFO
    • LAST_ONLY

Befehl: oozie job –oozie http: // localhost: 11000 / oozie -config -run

Wenn eine in der Definition verwendete Konfigurationseigenschaft beim Übergeben des Koordinatorjobs nicht mit der Jobkonfiguration bereitgestellt wird, schlägt die Jobübermittlung fehl.

Apache Oozie Tutorial: Oozie Bundle

Oozie Bundle-SystemMit dieser Option können Sie eine Reihe von Koordinatoranwendungen definieren und ausführen, die häufig als Datenpipeline bezeichnet werden. In einem Oozie-Bundle gibt es keine explizite Abhängigkeit zwischen den Koordinatoranwendungen. Sie können jedoch die Datenabhängigkeit von Koordinatoranwendungen verwenden, um eine implizite Datenanwendungspipeline zu erstellen.Sie können das Bundle starten / stoppen / anhalten / fortsetzen / erneut ausführen. Es bietet eine bessere und einfachere Bedienung.

Anstoßzeit & minus Der Zeitpunkt, zu dem ein Bundle gestartet und Koordinatoranträge eingereicht werden sollen.

In diesem Apache Oozie-Tutorial erfahren Sie, wie Sie einen Workflow-Job erstellen.

Apache Oozie Tutorial: Word Count Workflow Job

In diesem Beispiel führen wir einen Wortzähljob ​​mit Apache Oozie aus. Hier wird nicht erläutert, wie ein MapReduce-Wortzählprogramm geschrieben wird. Bevor Sie diesem Apache Oozie-Tutorial folgen, müssen Sie es herunterladen Wortzählglas Datei. Erstellen Sie jetzt ein WordCountTest-Verzeichnis, in dem alle Dateien abgelegt werden. Erstellen Sie ein lib-Verzeichnis, in dem wir die Wortanzahl wie in den folgenden Bildern gezeigt platzieren.

Lassen Sie uns jetzt weitermachen und erstellen job.properties & workflow.xml Dateien, in denen wir den Job und die damit verbundenen Parameter angeben.

job.properties

Zuerst erstellen wir eine job.properties Datei, in der wir den Pfad von NameNode & ResourceManager definieren. Der NameNode-Pfad ist zum Auflösen des Workflow-Verzeichnispfads erforderlich. Der JobTracker-Pfad hilft beim Übermitteln des Jobs an YARN. Wir müssen den Weg des workflow.xml Datei, die in HDFS gespeichert werden soll.

workflow.xml

Als nächstes müssen wir die erstellen workflow.xml Datei, in der wir alle unsere Aktionen definieren und ausführen. Zuerst müssen wir den Namen der Workflow-App angeben, d. H. WorkflowRunnerTest . Dann spezifizieren wir die Knoten starten . Der Startknoten ( im das starten Etikett ) ist der Einstiegspunkt für einen Workflow-Job. Es zeigt auf den ersten Workflowknoten, von dem aus der Job beginnen soll. Wie Sie im folgenden Bild sehen können, ist der nächste Knoten Kreuzung0 Von dort aus beginnt der Job.

Als Nächstes geben wir die auszuführende Aufgabe im Aktionsknoten an. Wir führen hier eine MapReduce WordCount-Aufgabe aus. Wir müssen die Konfigurationen angeben, die für die Ausführung dieser MapReduce-Aufgabe erforderlich sind. Wir definieren den Job Tracker und die NameNode-Adresse.

Als nächstes folgt das vorbereitete Element, das ausschließlich für die Verzeichnisbereinigung verwendet wird, bevor die Aktion ausgeführt wird. Hier führen wir einen Löschvorgang in HDFS durch, um das zu löschen out1 Ordner, wenn es bereits erstellt wurde. Das Tag 'Vorbereiten' wird zum Erstellen oder Löschen eines Ordners vor dem Ausführen des Jobs verwendet. Anschließend geben wir die MapReduce-Eigenschaften wie Jobwarteschlangenname, Mapper-Klasse, Reduziererklasse, Ausgabeschlüsselklasse und Ausgabewertklasse an.

Die letzte MapReduce-Taskkonfiguration ist das Eingabe- und Ausgabeverzeichnis in HDFS. Das Eingabeverzeichnis ist Daten Verzeichnis, das im Stammpfad von NameNode gespeichert ist . Zuletzt geben wir das Kill-Element an, wenn der Job fehlschlägt.

Datenstrukturen und Algorithmen in Java

Jetzt müssen wir die bewegen WordCountTest Ordner in HDFS, wie wir in angegeben haben oozie.wf.application.path Eigentum in job.properties Datei. Also kopieren wir das WordCountTest Ordner im Hadoop-Stammverzeichnis.

Befehl: hadoop fs -put WordCountTest /

Zur Überprüfung können Sie in der NameNode-Webbenutzeroberfläche überprüfen, ob der Ordner in das HDFS-Stammverzeichnis hochgeladen wurde oder nicht.

Jetzt sind wir alle bereit, den Workflow-Job auszuführen.

Befehl: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Sobald wir unseren Job ausgeführt haben, erhalten wir die Job-ID (d. H. 0000009-171219160449620-oozie-edur-W ) wie im obigen Bild gezeigt. Sie können den Job überprüfen, den Sie in der Oozie Web-Benutzeroberfläche gesendet haben, d. H. localhost: 11000 . Im folgenden Bild sehen Sie, dass der von uns eingereichte Auftrag unten aufgeführt ist.

Wenn Sie im obigen Bild sehen, sehen Sie die Job-ID, den Namen des Jobs, den Status des Jobs, den Benutzer, der den Job gesendet hat, den Zeitpunkt der Erstellung, den Start und die letzte Änderung. Sie können auf den Job klicken, um weitere Informationen zu erhalten:

  • Job Info

  • Job Definition

  • Jobkonfiguration

Wenn der Status des Jobs erfolgreich ist, müssen wir zum HDFS-Stammverzeichnis gehen und prüfen, ob das Ausgabeverzeichnis erstellt wurde oder nicht.

Wie Sie sehen können, dass die oozieout Das Verzeichnis wurde im HDFS erstellt. Schauen wir uns nun die erstellte Ausgabedatei an.

Da wir gesehen haben, wie ein Oozie-Workflow-Job erstellt wird, werden wir jetzt in diesem Apache Oozie-Tutorial-Blog fortfahren und verstehen, wie ein Koordinatorjob erstellt wird.

Apache Oozie Tutorial: Zeitbasierter Job als Koordinator für die Wortzählung

In diesem Beispiel erstellen wir einen zeitbasierten Wortzählkoordinatorjob, der nach einem bestimmten Zeitintervall ausgeführt wird. Sie können mit Apache Oozie einen Job erstellen und planen, der täglich oder regelmäßig ausgeführt werden muss.

Lassen Sie uns in diesem Apache Oozie-Tutorial schnell vorankommen und einen Koordinatorjob erstellen. Hier werden wir drei Dateien erstellen, d.h. Koordinator.Eigenschaften , koordinator.xml & workflow.xml Datei. Auch hier werden wir das w platzieren ordcount Glas in der lib Verzeichnis wie im folgenden Bild gezeigt.

Lassen Sie uns diese Dateien nun einzeln betrachten. Zuerst beginnen wir mit der Datei koordinator.properties.

Hier geben wir die Häufigkeit an, mit der der Workflow ausgeführt wird. Die Frequenz wird immer in Minuten angegeben. In unserem Fall wird dieser Koordinatorjob zwischen der angegebenen Zeit einmal pro Stunde ausgeführt. Die Frequenz wird verwendet, um die periodischen Intervalle zu erfassen, in denen die Datensätze erstellt werden, und die Ausführung von Koordinatoranwendungen ist geplant.

Verwenden Sie zum Definieren der Häufigkeit in Minuten, Stunden, Tagen und Monaten das folgende Format:

$ {Koordinate: Minuten (int n)} n $ {Koordinate: Minuten (45)} -> 45
$ {Koordinate: Stunden (int n)} n * 60 $ {Koordinate: Stunden (3)} -> 180
$ {Koordinate: Tage (int n)} Variable $ {coord: days (2)} -> Minuten in 2 vollen Tagen ab dem aktuellen Datum
$ {Koordinate: Monate (int n)} Variable $ {coord: month (1)} -> Minuten in einem vollen Monat ab dem aktuellen Datum

Als Nächstes definieren wir die Start- und Endzeit des Jobs wie im obigen Bild gezeigt. Startzeit ist die Startzeit für den Job & endTime ist die Endzeit des Jobs.

Als Nächstes geben wir die URL NameNode und ResourceManager an, mit der die Datei workflow.xml in HDFS referenziert und Aufträge an YARN gesendet werden. Zuletzt geben wir den Pfad workflow.xml an, den wir in HDFS speichern werden. Wir werden auch den Anwendungspfad angeben, in dem alle Dateien und das lib-Verzeichnis gespeichert werden.

Die zweite Datei ist koordinator.xml wo wir alle Eigenschaften verwenden, die wir in der angegeben haben Koordinator.Eigenschaften Datei. Zunächst geben wir die Eigenschaften der Koordinatoranwendung an, d. H. Name, Häufigkeit und Zeitzone. Als Nächstes geben wir die Workflows einzeln an. Hier haben wir nur einen Workflow. Innerhalb des Aktionselements erstellen wir also ein Workflowelement, in dem wir den Anwendungspfad angeben.

Als nächstes müssen wir schaffen, um voranzukommen workflow.xml Datei, in der wir die Aufgabe angeben werden. Es ist ähnlich wie beim workflow.xml Datei, die wir im Workflow-Job erstellt haben.

Jetzt werden wir dies wieder verschieben WordCountTest_TimedBased Verzeichnis zu HDFS.

Befehl :: hadoop fs -put WordCountTest_TimeBased /

Jetzt sind wir alle bereit, diesen Koordinatorjob in diesem Oozie-Tutorial auszuführen. Lassen Sie uns fortfahren und es ausführen.

Befehl :: oozie job –oozie http: // localhost: 11000 / oozie -config koordinator.properties -run

Notieren Sie sich diese Koordinator-Job-ID (d. H. 0000010-171219160449620-oozie-edur-C). Es wird Ihnen helfen, Ihren Job in der Oozie Web-Benutzeroberfläche aufzuspüren.

Sie können den Job auf der Registerkarte 'Koordinatorjobs' in der Oozie Web-Benutzeroberfläche sehen. Ähnlich wie beim Workflow-Job haben wir Name, Status, Benutzer, Häufigkeit, Start- und Endzeit des Jobs. Wenn Sie auf einen bestimmten Job klicken, werden die Details des Jobs angezeigt, wie in den folgenden Abbildungen gezeigt.

  • Koordinator Job Info

  • Jobdefinition des Koordinators

  • Konfiguration des Koordinatorjobs

Nun haben wir uns die verschiedenen Registerkarten angesehen. Wir kehren zum HDFS-Stammverzeichnis zurück, in dem der Ausgabeordner erstellt wird. Wie Sie im folgenden Bild sehen können, oozieTimeBasedout Verzeichnis wurde erstellt, wie wir in angegeben haben workflow.xml Datei.

Schauen wir uns nun die erstellte Ausgabedatei an.

Array von Objekten im Java-Beispielprogramm

Ich hoffe, Sie fanden diesen Apache Oozie Tutorial-Blog informativ. Wenn Sie mehr erfahren möchten, können Sie dies durchgehen Hier erfahren Sie mehr über Big Data und wie Hadoop Herausforderungen im Zusammenhang mit Big Data löst.

Nachdem Sie Apache Oozie verstanden haben, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Edureka Big Data Hadoop-Zertifizierungskurs hilft Lernenden, Experten für HDFS, Garn, MapReduce, Schwein, Bienenstock, HBase, Oozie, Flume und Sqoop zu werden. Dabei werden Anwendungsfälle in Echtzeit in den Bereichen Einzelhandel, soziale Medien, Luftfahrt, Tourismus und Finanzen verwendet.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren und wir werden uns bei Ihnen melden.