Apache Oozie Tutorial: Vad är, arbetsflöde, exempel – Hadoop

Vad är OOZIE?

Apache Oozie är en arbetsflödesschemaläggare för Hadoop. Det är ett system som kör arbetsflödet för beroende jobb. Här tillåts användare att skapa Regisserad acykliska grafer av arbetsflöden, som kan köras parallellt och sekventiellt i Hadoop.

Den består av två delar:

  • Arbetsflödesmotor: Ansvaret för en arbetsflödesmotor är att lagra och köra arbetsflöden som består av Hadoop-jobb, t.ex. MapReduce, Pig, Hive.
  • Koordinatormotor: Den kör arbetsflödesjobb baserat på fördefinierade scheman och tillgänglighet av data.

Oozie är skalbar och kan hantera snabb exekvering av tusentals arbetsflöden (vart och ett bestående av dussintals jobb) i ett Hadoop-kluster.

OOZIE

Oozie är också väldigt flexibel. Man kan enkelt starta, stoppa, avbryta och köra jobb igen. Oozie gör det mycket enkelt att köra misslyckade arbetsflöden igen. Man kan lätt förstå hur svårt det kan vara att ta igen missade eller misslyckade jobb på grund av driftstopp eller misslyckande. Det är till och med möjligt att hoppa över en specifik misslyckad nod.

Hur fungerar OOZIE?

Oozie körs som en tjänst i klustret och klienter skickar in arbetsflödesdefinitioner för omedelbar eller senare bearbetning.

Oozie arbetsflöde består av åtgärdsnoder och styrflödesnoder.

An åtgärdsnod representerar en arbetsflödesuppgift, t.ex. flytta filer till HDFS, köra en MapReduce, Pig eller Bikupa jobb, importera data med Sqoop eller köra ett skalskript av ett program som skrivits in Java.

A kontroll-flödesnod styr arbetsflödets exekvering mellan åtgärder genom att tillåta konstruktioner som villkorlig logik där olika grenar kan följas beroende på resultatet av tidigare åtgärdsnod.

Starta nod, Slutnodoch Felnod faller under denna kategori av noder.

Startnod, anger början av arbetsflödesjobbet.

Slutnod, signalerar slutet på jobbet.

Felnod anger förekomsten av ett fel och motsvarande felmeddelande som ska skrivas ut.

I slutet av körningen av ett arbetsflöde används HTTP-återuppringning av Oozie för att uppdatera klienten med arbetsflödesstatus. Inträde till eller utträde från en åtgärdsnod kan också utlösa återuppringningen.

Exempel på arbetsflödesdiagram

Exempel på arbetsflödesdiagram

Packa och distribuera en Oozie-arbetsflödesapplikation

En arbetsflödesapplikation består av arbetsflödesdefinitionen och alla tillhörande resurser såsom MapReduce Jar-filer, Pig-skript etc. Applikationer måste följa en enkel katalogstruktur och distribueras för att HDFS så att Oozie kan komma åt dem.

Ett exempel på katalogstruktur visas nedan-

<name of workflow>/</name>
??? lib/
? ??? hadoop-examples.jar
??? workflow.xml

Det är nödvändigt att behålla workflow.xml (en arbetsflödesdefinitionsfil) i katalogen på översta nivån (överordnad katalog med arbetsflödesnamn). Lib-katalogen innehåller Jar-filer som innehåller MapReduce-klasser. Arbetsflödesapplikationer som överensstämmer med denna layout kan byggas med vilket byggverktyg som helst, t.ex. Ant eller Maven.

En sådan byggnad måste kopieras till HDFS med ett kommando, till exempel -

% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow

Steg för att köra ett Oozie-arbetsflödesjobb

I det här avsnittet kommer vi att se hur man kör ett arbetsflödesjobb. För att köra detta kommer vi att använda kommandoradsverktyget Oozie (ett klientprogram som kommunicerar med Oozie-servern).

1. Exportera OOZIE_URL miljövariabel som talar om för oozie-kommandot vilken Oozie-server som ska användas (här använder vi en som körs lokalt):

% export OOZIE_URL="http://localhost:11000/oozie"

2. Kör arbetsflödesjobb med-

% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run

Alternativet -config hänvisar till en lokal Java egenskapsfilen som innehåller definitioner för parametrarna i XML-filen för arbetsflödet, samt oozie.wf.application.path, som talar om för Oozie var arbetsflödesapplikationen finns i HDFS.

Exempel på innehåll i egenskapsfilen:

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>

3. Få status för arbetsflödesjobb-

Status för arbetsflödesjobb kan ses med hjälp av underkommandot "jobb" med alternativet "-info" och ange jobb-id efter "-info".

e.g., % oozie job -info <job id>

Utdata visar status som är en av KÖR, DÖDAD eller LYCKAD.

4. Resultaten av framgångsrikt arbetsflöde kan ses med Hadoop-kommandot som-

% hadoop fs -cat <location of result>

Varför använda Oozie?

Huvudsyftet med att använda Oozie är att hantera olika typer av jobb som bearbetas i Hadoop-systemet.

Beroenden mellan jobb specificeras av en användare i form av riktade acykliska grafer. Oozie konsumerar denna information och tar hand om deras exekvering i rätt ordning som specificerats i ett arbetsflöde. På så sätt sparas användarens tid för att hantera hela arbetsflödet. Dessutom har Oozie en bestämmelse för att specificera hur ofta ett visst jobb ska utföras.

Funktioner hos Oozie

  • Oozie har klient-API och kommandoradsgränssnitt som kan användas för att starta, kontrollera och övervaka jobb från Java ansökan.
  • Genom att använda webbtjänstens API:er kan man kontrollera jobb var som helst.
  • Oozie har möjlighet att utföra jobb som är schemalagda att köras med jämna mellanrum.
  • Oozie har möjlighet att skicka e-postmeddelanden efter avslutade jobb.