Apache Oozie Tutorial: Hvad er, arbejdsgang, eksempel – Hadoop
Hvad er OOZIE?
Apache Oozie er en workflow-planlægger til Hadoop. Det er et system, der kører arbejdsgangen for afhængige job. Her har brugerne lov til at oprette Instrueret acykliske grafer af arbejdsgange, som kan køres parallelt og sekventielt i Hadoop.
Det består af to dele:
-
Workflow-motor: Ansvaret for en workflow-motor er at gemme og køre arbejdsgange sammensat af Hadoop-jobs, f.eks. MapReduce, Pig, Hive.
- Koordinator motor: Den kører workflowjob baseret på foruddefinerede tidsplaner og tilgængelighed af data.
Oozie er skalerbar og kan administrere rettidig eksekvering af tusindvis af arbejdsgange (som hver består af snesevis af job) i en Hadoop-klynge.
Oozie er også meget fleksibel. Man kan nemt starte, stoppe, suspendere og køre job igen. Oozie gør det meget nemt at køre fejlbehæftede arbejdsgange igen. Man kan nemt forstå, hvor svært det kan være at indhente mistede eller mislykkede jobs på grund af nedetid eller fiasko. Det er endda muligt at springe en specifik mislykket node over.
Hvordan virker OOZIE?
Oozie kører som en tjeneste i klyngen, og klienter indsender workflowdefinitioner til øjeblikkelig eller senere behandling.
Oozie arbejdsgang består af handlingsknudepunkter og kontrol-flow noder.
An handlingsknudepunkt repræsenterer en workflow-opgave, f.eks. flytning af filer til HDFS, kørsel af en MapReduce, Pig eller Hive job, import af data ved hjælp af Sqoop eller kørsel af et shell-script af et program skrevet i Java.
A kontrol-flow node styrer arbejdsgangens udførelse mellem handlinger ved at tillade konstruktioner som betinget logik, hvor forskellige grene kan følges afhængigt af resultatet af tidligere handlingsknude.
Start node, Slut nodeog Fejl node falder ind under denne kategori af noder.
Start node, angiver starten på arbejdsprocesjobbet.
Slut node, signalerer afslutning på jobbet.
Fejl node angiver forekomsten af en fejl og den tilsvarende fejlmeddelelse, der skal udskrives.
Ved afslutningen af udførelsen af en arbejdsgang, bruges HTTP-tilbagekald af Oozie til at opdatere klienten med arbejdsgangens status. Indgang til eller udgang fra en handlingsknude kan også udløse tilbagekaldet.
Eksempel Workflow Diagram
Pakke og implementere en Oozie workflow-applikation
En workflow-applikation består af workflow-definitionen og alle de tilknyttede ressourcer såsom MapReduce Jar-filer, Pig-scripts osv. Applikationer skal følge en simpel mappestruktur og implementeres til at HDFS så Oozie kan få adgang til dem.
Et eksempel på mappestruktur er vist nedenfor-
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Det er nødvendigt at beholde workflow.xml (en workflow-definitionsfil) i mappen på øverste niveau (overordnet mappe med workflownavn). Lib-biblioteket indeholder Jar-filer, der indeholder MapReduce-klasser. Workflow-applikation, der er i overensstemmelse med dette layout, kan bygges med ethvert byggeværktøj, f.eks. Ant eller Maven.
En sådan build skal kopieres til HDFS ved hjælp af en kommando, for eksempel -
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Trin til at køre et Oozie-workflowjob
I dette afsnit vil vi se, hvordan man kører et workflowjob. For at køre dette bruger vi Oozie-kommandolinjeværktøjet (et klientprogram, der kommunikerer med Oozie-serveren).
1. Eksporter OOZIE_URL miljøvariabel, som fortæller oozie-kommandoen, hvilken Oozie-server der skal bruges (her bruger vi en, der kører lokalt):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Kør workflowjob ved hjælp af-
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Indstillingen -config refererer til en lokal Java egenskabsfil, der indeholder definitioner for parametrene i workflow-XML-filen, samt oozie.wf.application.path, som fortæller Oozie placeringen af workflow-applikationen i HDFS.
Eksempel på indhold af egenskabsfilen:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Få status for workflowjob-
Status for workflow-job kan ses ved hjælp af underkommando 'job' med '-info'-mulighed og angivelse af job-id efter '-info'.
e.g., % oozie job -info <job id>
Output viser status, som er en af KØRER, DRÆBET eller LYKKET.
4. Resultaterne af vellykket udførelse af workflow kan ses ved hjælp af Hadoop kommando som-
% hadoop fs -cat <location of result>
Hvorfor bruge Oozie?
Hovedformålet med at bruge Oozie er at administrere forskellige typer job, der behandles i Hadoop-systemet.
Afhængigheder mellem job specificeres af en bruger i form af Directed Acyclic Graphs. Oozie bruger disse oplysninger og sørger for deres eksekvering i den korrekte rækkefølge som angivet i en arbejdsgang. På den måde spares brugerens tid til at styre hele arbejdsgangen. Derudover har Oozie en bestemmelse om at specificere hyppigheden af udførelsen af et bestemt job.
Funktioner af Oozie
- Oozie har klient-API og kommandolinjegrænseflade, som kan bruges til at starte, kontrollere og overvåge job fra Java ansøgning.
- Ved at bruge dets Web Service API'er kan man styre jobs hvor som helst.
- Oozie har mulighed for at udføre job, som er planlagt til at køre med jævne mellemrum.
- Oozie har mulighed for at sende e-mail-meddelelser efter afslutning af job.