Apache Oozie -opastus: Mikä on, työnkulku, esimerkki – Hadoop
Mikä on OOZIE?
Apache Oozie on Hadoopin työnkulun ajoitus. Se on järjestelmä, joka suorittaa riippuvaisten töiden työnkulkua. Täällä käyttäjät voivat luoda Ohjatut asykliset kaaviot työnkulkuja, joita voidaan ajaa rinnakkain ja peräkkäin Hadoopissa.
Se koostuu kahdesta osasta:
-
Työnkulkumoottori: Työnkulkumoottorin vastuulla on tallentaa ja suorittaa työnkulkuja, jotka koostuvat Hadoop-töistä, esim. MapReduce, Pig, Hive.
- Koordinaattorin moottori: Se suorittaa työnkulkutöitä ennalta määritettyjen aikataulujen ja tietojen saatavuuden perusteella.
Oozie on skaalautuva ja pystyy hallitsemaan tuhansien työnkulkujen oikea-aikaista suorittamista (jokainen koostuu kymmenistä töistä) Hadoop-klusterissa.
Oozie on myös erittäin joustava. Työt voidaan helposti aloittaa, pysäyttää, keskeyttää ja suorittaa uudelleen. Oozie tekee epäonnistuneiden työnkulkujen suorittamisesta erittäin helppoa uudelleen. Ymmärtää helposti, kuinka vaikeaa voi olla saavuttaa menetetyt tai epäonnistuneet työt seisokkien tai epäonnistumisen vuoksi. On jopa mahdollista ohittaa tietty epäonnistunut solmu.
Miten OOZIE toimii?
Oozie toimii palveluna klusterissa ja asiakkaat lähettävät työnkulkumääritykset välitöntä tai myöhempää käsittelyä varten.
Oozie-työnkulku koostuu toimintasolmut ja ohjausvirtasolmut.
An toimintasolmu edustaa työnkulkutehtävää, esim. tiedostojen siirtämistä HDFS:ään, MapReduce-, Pig- tai -ohjelman suorittamista Hive työt, tietojen tuominen Sqoopin avulla tai sisään kirjoitetun ohjelman komentosarjan suorittaminen Java.
A ohjausvirtasolmu ohjaa työnkulun suorittamista toimintojen välillä sallimalla ehdollisen logiikan kaltaiset konstruktit, joissa voidaan seurata eri haaroja aiemman toimintosolmun tuloksesta riippuen.
Käynnistä Node, Päätesolmuja Virhesolmu kuuluvat tähän solmuluokkaan.
Aloita solmu, määrittää työnkulkutyön alkamisen.
Päätesolmu, viestii työn päättymisestä.
Virhesolmu ilmaisee virheen esiintymisen ja vastaavan tulostettavan virheilmoituksen.
Työnkulun suorituksen lopussa Oozie käyttää HTTP-soittoa päivittääkseen asiakkaan työnkulun tilan. Toimintasolmuun saapuminen tai sieltä poistuminen voi myös laukaista takaisinkutsun.
Esimerkki työnkulkukaaviosta
Oozie-työnkulkusovelluksen pakkaaminen ja käyttöönotto
Työnkulkusovellus koostuu työnkulun määrittelystä ja kaikista siihen liittyvistä resursseista, kuten MapReduce Jar -tiedostoista, Pig-skripteistä jne. Sovellusten on noudatettava yksinkertaista hakemistorakennetta ja ne otetaan käyttöön HDFS jotta Oozie voi käyttää niitä.
Esimerkki hakemistorakenteesta on esitetty alla -
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Workflow.xml (työnkulun määritystiedosto) on säilytettävä ylimmän tason hakemistossa (emohakemisto työnkulun nimellä). Lib-hakemisto sisältää Jar-tiedostoja, jotka sisältävät MapReduce-luokkia. Tämän asettelun mukainen työnkulkusovellus voidaan rakentaa millä tahansa rakennustyökalulla, esim. Ant tai Maven.
Tällainen koontiversio on kopioitava HDFS:ään komennolla, esimerkiksi -
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Oozie-työnkulun suorittamisen vaiheet
Tässä osiossa näemme, kuinka työnkulkutyö suoritetaan. Tämän suorittamiseen käytämme Oozie-komentorivityökalua (asiakasohjelma, joka kommunikoi Oozie-palvelimen kanssa).
1. Vie OOZIE_URL-ympäristömuuttuja, joka kertoo oozie-komennolle, mitä Oozie-palvelinta tulee käyttää (tässä käytämme paikallisesti toimivaa):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Suorita työnkulkutyö käyttämällä -
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Valinta -config viittaa paikalliseen Java ominaisuustiedosto, joka sisältää määritelmät työnkulun XML-tiedoston parametreille, sekä oozie.wf.application.path, joka kertoo Oozielle työnkulkusovelluksen sijainnin HDFS:ssä.
Esimerkki ominaisuustiedoston sisällöstä:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Hanki työnkulun työn tila-
Työnkulun työn tila voidaan nähdä käyttämällä alakomentoa 'job' ja '-info'-optiota ja määrittämällä työtunnuksen '-info' jälkeen.
e.g., % oozie job -info <job id>
Lähtö näyttää tilan, joka on joko KÄYNNISSÄ, TAPETTU tai ONNETTU.
4. Onnistuneen työnkulun suorituksen tulokset voidaan nähdä käyttämällä Hadoop-komentoa, kuten
% hadoop fs -cat <location of result>
Miksi käyttää Ooziea?
Oozien käytön päätarkoitus on hallita erilaisia Hadoop-järjestelmässä käsiteltäviä töitä.
Käyttäjä määrittää töiden väliset riippuvuudet suunnattujen asyklisten kuvaajien muodossa. Oozie käyttää näitä tietoja ja huolehtii niiden suorittamisesta oikeassa järjestyksessä työnkulun mukaisesti. Tällä tavoin säästyy käyttäjän aikaa täydellisen työnkulun hallintaan. Lisäksi Ooziella on säännös tietyn työn suoritustiheyden määrittämisestä.
Oozien ominaisuudet
- Ooziessa on asiakassovellusliittymä ja komentorivikäyttöliittymä, jota voidaan käyttää töiden käynnistämiseen, ohjaamiseen ja valvontaan Java sovellus.
- Web Service API -sovellusliittymien avulla voit hallita töitä mistä tahansa.
- Ooziella on mahdollisuus suorittaa työt, jotka on ajoitettu suoritettavaksi säännöllisesti.
- Ooziella on mahdollisuus lähettää sähköposti-ilmoituksia töiden valmistuttua.