Apache Oozie-tutorial: wat is, workflow, voorbeeld – Hadoop

Wat is OOZIE?

Apache Oozie is een workflowplanner voor Hadoop. Het is een systeem dat de workflow van afhankelijke taken uitvoert. Hier mogen gebruikers creëren Gerichte acyclische grafieken van workflows, die parallel en opeenvolgend in Hadoop kunnen worden uitgevoerd.

Het bestaat uit twee delen:

  • Workflow-engine: De verantwoordelijkheid van een workflow-engine is het opslaan en uitvoeren van workflows die zijn samengesteld uit Hadoop-taken, bijvoorbeeld MapReduce, Pig, Hive.
  • Coördinator motor: Het voert workflowtaken uit op basis van vooraf gedefinieerde schema's en beschikbaarheid van gegevens.

Oozie is schaalbaar en kan de tijdige uitvoering van duizenden workflows (elk bestaande uit tientallen taken) in een Hadoop-cluster beheren.

OOZIE

Oozie is ook erg flexibel. U kunt eenvoudig taken starten, stoppen, onderbreken en opnieuw uitvoeren. Oozie maakt het heel eenvoudig om mislukte workflows opnieuw uit te voeren. Het is gemakkelijk te begrijpen hoe moeilijk het kan zijn om gemiste of mislukte taken in te halen als gevolg van downtime of mislukking. Het is zelfs mogelijk om een ​​specifiek defect knooppunt over te slaan.

Hoe werkt OOZIE?

Oozie draait als een service in het cluster en klanten dienen werkstroomdefinities in voor onmiddellijke of latere verwerking.

Oozie-workflow bestaat uit actie knooppunten en controlestroomknooppunten.

An actie knooppunt vertegenwoordigt een werkstroomtaak, bijvoorbeeld het verplaatsen van bestanden naar HDFS, het uitvoeren van een MapReduce-, Pig- of Bijenkorf jobs, het importeren van gegevens met Sqoop of het uitvoeren van een shellscript van een programma geschreven in Java.

A controlestroomknooppunt regelt de uitvoering van de workflow tussen acties door allowing constructies zoals voorwaardelijke logica waarbij verschillende takken kunnen worden gevolgd, afhankelijk van het resultaat van een eerder actieknooppunt.

Start Knooppunt, Eindknooppunt en Fout knooppunt vallen onder deze categorie knooppunten.

Beginknooppunt, geeft het begin van de werkstroomtaak aan.

Eindknooppunt, geeft het einde van de taak aan.

Fout knooppunt geeft het optreden van een fout en de bijbehorende foutmelding aan die moet worden afgedrukt.

Aan het einde van de uitvoering van een workflow wordt HTTP-callback door Oozie gebruikt om de client bij te werken met de workflowstatus. Het betreden of verlaten van een actieknooppunt kan ook de callback activeren.

Voorbeeld van een workflowdiagram

Voorbeeld van een workflowdiagram

Een Oozie-workflowapplicatie verpakken en implementeren

Een workflow-applicatie bestaat uit de workflow-definitie en alle bijbehorende bronnen, zoals MapReduce Jar-bestanden, Pig-scripts enz. Applicaties moeten een eenvoudige directorystructuur volgen en worden ingezet om HDFS zodat Oozie er toegang toe heeft.

Hieronder wordt een voorbeeld van een mapstructuur weergegeven:

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

Het is noodzakelijk om workflow.xml (een werkstroomdefinitiebestand) in de map op het hoogste niveau te bewaren (bovenliggende map met werkstroomnaam). De Lib-map bevat Jar-bestanden die MapReduce-klassen bevatten. Workflow-applicaties die aan deze lay-out voldoen, kunnen met elk bouwtool worden gebouwd, bijvoorbeeld Ant of Maven.

Een dergelijke build moet bijvoorbeeld naar HDFS worden gekopieerd met behulp van een opdracht:

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

Stappen voor het uitvoeren van een Oozie-workflowtaak

In dit gedeelte zullen we zien hoe u een workflowtaak uitvoert. Om dit uit te voeren, zullen we het Oozie-opdrachtregelprogramma gebruiken (een clientprogramma dat communiceert met de Oozie-server).

1. Exporteer de OOZIE_URL-omgevingsvariabele die de oozie-opdracht vertelt welke Oozie-server moet worden gebruikt (hier gebruiken we er een die lokaal draait):

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

2. Voer een workflowtaak uit met behulp van-

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

De optie -config verwijst naar een lokaal Java Properties-bestand met definities voor de parameters in het workflow-XML-bestand, evenals oozie.wf.application.path, dat Oozie de locatie van de workflow-applicatie in HDFS vertelt.

Voorbeeldinhoud van het eigenschappenbestand:

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

3. Krijg de status van de workflowtaak-

De status van de workflowtaak kan worden bekeken met behulp van het subcommando 'job' met de optie '-info' en het specificeren van de taak-ID na '-info'.

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

De uitvoer toont de status RUNNING, GEDOOD of GESLAAGD.

4. Resultaten van een succesvolle uitvoering van de workflow kunnen worden bekeken met behulp van de Hadoop-opdracht zoals:

% hadoop fs -cat <location of result>

Waarom Oozie gebruiken?

Het belangrijkste doel van het gebruik van Oozie is het beheren van verschillende soorten taken die in het Hadoop-systeem worden verwerkt.

Afhankelijkheden tussen taken worden door een gebruiker gespecificeerd in de vorm van gerichte acyclische grafieken. Oozie verwerkt deze informatie en zorgt voor de uitvoering ervan in de juiste volgorde zoals gespecificeerd in een workflow. Op die manier wordt de tijd van de gebruiker om de volledige workflow te beheren bespaard. Daarnaast heeft Oozie een bepaling om de frequentie van uitvoering van een bepaalde taak te specificeren.

Kenmerken van Oozie

  • Oozie heeft een client-API en opdrachtregelinterface die kunnen worden gebruikt om taken vanuit de Java-applicatie te starten, controleren en monitoren.
  • Met behulp van de Web Service API's kunt u overal opdrachten beheren.
  • Oozie beschikt over de mogelijkheid om taken uit te voeren die volgens de planning periodiek worden uitgevoerd.
  • Oozie heeft een voorziening om email meldingen na voltooiing van taken.