Tutorial Oozie: apreneu a programar les vostres feines Hadoop

Tutorial d'Apache Oozie: Oozie és un sistema de planificació de flux de treball per gestionar feines Hadoop. És un sistema escalable, fiable i extensible.

Abans d’iniciar aquest tutorial d’Apache Oozie, entenem on s’utilitza el sistema de planificació. En els escenaris en temps real, un treball depèn d'altres treballs, com ara que la sortida d'una tasca MapReduce es pugui passar al treball Hive per processar-lo posteriorment. El següent escenari pot ser, programar un conjunt de tasques en funció del temps, com ara diària, setmanal, mensual o en funció de la disponibilitat de dades. Apache Oozie us proporciona el poder per gestionar fàcilment aquest tipus d’escenaris. Per això, Apache Oozie és una part important de .



En aquest bloc de tutorial d'Apache Oozie, tractarem:



  • Introducció a Apache Oozie
  • Flux de treball Oozie
  • Coordinador Oozie
  • Paquet Oozie
  • Feina de flux de treball de recompte de paraules
  • Treball de coordinador de recompte de paraules basat en el temps

Començarem aquest tutorial d’Oozie introduint Apache Oozie. A continuació, continuarem comprenent els tipus de treballs que es poden crear i executar amb Apache Oozie.

Tutorial Apache Oozie: Introducció a Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie és un sistema de planificació per gestionar i executar feines Hadoop en un entorn distribuït. Podem crear una canalització desitjada combinant un tipus diferent de tasques. Pot ser la vostra tasca Hive, Pig, Sqoop o MapReduce. Mitjançant Apache Oozie també podeu programar els vostres treballs. Dins d’una seqüència de la tasca, també es poden programar dos o més treballs perquè s’executin paral·lels. És un sistema escalable, fiable i extensible.



Oozie és una aplicació web Java de codi obert que s’encarrega d’iniciar les accions del flux de treball. Al seu torn, utilitza el motor d'execució Hadoop per executar les tasques.

Apache Oozie detecta la realització de tasques mitjançant la devolució de trucades i l'enquesta. Quan Oozie inicia una tasca, proporciona un URL HTTP de devolució de trucada únic a la tasca i notifica aquest URL quan la tasca s'hagi completat. Si la tasca falla en invocar l'URL de devolució de trucada, Oozie pot examinar la tasca per completar-la.

Hi ha tres tipus de feines a Apache Oozie:



  • Feines de flux de treball d’Oozie & menys Són gràfics acíclics dirigits (DAG) que especifiquen una seqüència d'accions a executar.
  • Treballs de coordinador Oozie & menys Consisteixen en feines de flux de treball activades pel temps i la disponibilitat de dades.
  • Paquets Oozie & menys Aquests es poden referir a un paquet de diversos coordinadors i feines de flux de treball.

Ara, entenem totes aquestes feines una per una.

Tutorial d'Apache Oozie: flux de treball d'Oozie

El flux de treball és una seqüència d'accions organitzades en un gràfic acílic directe (DAG). Les accions depenen les unes de les altres, ja que la següent acció només es pot executar després de la sortida de l'acció actual. Una acció de flux de treball pot ser una acció Pig, acció Hive, acció MapReduce, acció Shell, acció Java, etc. Hi pot haver arbres de decisió per decidir com i en quines condicions s'hauria d'executar un treball.

Podem crear diferents tipus d’accions en funció del treball i cada tipus d’acció pot tenir el seu propi tipus d’etiquetes.El flux de treball i els scripts o pots s’han de col·locar al camí HDFS abans d’executar el flux de treball.

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

Per comprovar l’estat del treball, podeu anar a la consola web d’Oozie, és a dir, http: // nom_amfitrió: 11000 . En fer clic a la feina veureu l’estat de la feina.

En casos on volem executar diversos treballs de manera paral·lela, podem utilitzar-los Forquilla . Sempre que fem servir fork, hem d’utilitzar Join com a node final per fork. Per a cada bifurcació hi hauria d’haver una unió. Unir suposa que tots els nodes que s’executen de forma paral·lela són fills d’una sola bifurcació. Per exemple, podem crear dues taules al mateix temps paral·lelament.

Si volem executar una acció basada en el resultat de la decisió, podem afegir etiquetes de decisió. Per exemple, si ja tenim la taula de rusc, no caldrà que la torneu a crear. En aquesta situació, podem afegir una etiqueta de decisió per no executar els passos de creació de la taula si la taula ja existeix. Els nodes de decisió tenen una etiqueta de commutador similar a la de majúscules i minúscules.

El valor del rastrejador de treballs, el nom-node, l'script i el param es poden passar directament. Però això es fa difícil de gestionar. Aquí és on és útil un fitxer de configuració (és a dir, fitxer .property).

Tutorial d'Apache Oozie: coordinador d'Oozie

Podeu programar fluxos de treball complexos i fluxos de treball que es programen regularment mitjançant Coordinator. Oozie Coordinators activa els fluxos de treball en funció dels predicats de temps, dades o esdeveniments. Els fluxos de treball dins del coordinador de treballs comencen quan es compleix la condició donada.

Les definicions necessàries per a les feines de coordinador són:

  • començar & menys Inicia la data i hora per al treball.
  • final & menys Finalitza la data i hora del treball.
  • fus horari & menys Fus horari de l'aplicació del coordinador.
  • freqüència & menys La freqüència, en minuts, per executar els treballs.

Hi ha més propietats disponibles per a la informació de control:

  • temps d'espera & menys El temps màxim, en minuts, durant el qual una acció esperarà per complir les condicions addicionals abans de descartar-se. 0 indica que si no es compleixen tots els esdeveniments d'entrada en el moment de la materialització de l'acció, l'acció s'hauria d'espera immediatament. -1 indica que no hi ha temps d'espera, l'acció s'esperarà per sempre. El valor per defecte és -1.
  • simultaneïtat & menys El nombre màxim d'accions per a una tasca que es poden executar paral·lelament. El valor per defecte és 1.
  • execució - Especifica l'ordre d'execució si diverses instàncies del treball del coordinador han complert els seus criteris d'execució. Pot ser:
    • FIFO (predeterminat)
    • LIFO
    • ÚLTIMAMENT

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

Si no es proporciona una propietat de configuració utilitzada a la definició amb la configuració del treball mentre s’envia el treball del coordinador, l’enviament del treball fallarà.

Tutorial Apache Oozie: paquet Oozie

Sistema Oozie Bundleus permet definir i executar un conjunt d'aplicacions de coordinadors, sovint anomenades canalització de dades. En un paquet Oozie, no hi ha cap dependència explícita entre les aplicacions del coordinador. Tot i això, podeu utilitzar la dependència de dades de les aplicacions de coordinador per crear una canalització d’aplicacions de dades implícita.Podeu iniciar / aturar / suspendre / reprendre / tornar a executar el paquet. Proporciona un control operatiu millor i fàcil.

Temps d'inici & menys l'hora en què un paquet hauria d'iniciar i enviar sol·licituds de coordinador.

Avançant en aquest tutorial d'Apache Oozie, entendrem com es crea una tasca de flux de treball.

Tutorial d'Apache Oozie: treball de flux de treball de recompte de paraules

En aquest exemple, executarem un treball de recompte de paraules amb Apache Oozie. Aquí no parlarem de com escriure un programa de recompte de paraules MapReduce. Per tant, abans de seguir aquest tutorial d'Apache Oozie, heu de descarregar-lo pot de recompte de paraules dossier. Ara, creeu un directori WordCountTest on col·locarem tots els fitxers. Creeu un directori lib on col·locarem el pot de recompte de paraules tal com es mostra a les imatges següents.

Ara, anem avançant i creant job.properties & workflow.xml , on especificarem el treball i els paràmetres associats.

job.properties

En primer lloc, estem creant un fitxer job.properties fitxer, on estem definint el camí d'accés de NameNode & ResourceManager. El camí NameNode és necessari per resoldre el camí del directori del flux de treball i el camí JobTracker us ajudarà a enviar el treball a YARN. Hem de proporcionar el camí del workflow.xml , que s'hauria d'emmagatzemar a HDFS.

workflow.xml

A continuació, hem de crear el fitxer workflow.xml fitxer, on definirem totes les nostres accions i les executarem. En primer lloc, hem d’especificar el nom de l’aplicació de flux de treball, és a dir, WorkflowRunnerTest . A continuació, estem especificant el fitxer node d'inici . El node d'inici ( dins el començar a etiqueta ) és el punt d'entrada per a un treball de flux de treball. Apunta cap al primer node de flux de treball des d’on hauria de començar la tasca. Com podeu veure a la imatge següent, el següent node és intersecció0 des d’on començarà la feina.

A continuació, especifiquem la tasca a realitzar al node d'acció. Aquí estem executant una tasca MapReduce WordCount. Hem d’especificar les configuracions necessàries per executar aquesta tasca MapReduce. Estem definint el localitzador de treballs i l’adreça NameNode.

El següent és l'element preparat, que s'utilitza exclusivament per a la neteja del directori, abans d'executar l'acció. Aquí estem realitzant una operació de supressió en HDFS per suprimir el fitxer fora1 carpeta si ja està creada. L’etiqueta de preparació s’utilitza per crear o suprimir una carpeta abans d’executar la tasca. A continuació, especifiquem les propietats de MapReduce, com ara el nom de la cua de treballs, la classe de mapatge, la classe de reductor, la classe de clau de sortida i la classe de valor de sortida.

L'última configuració de la tasca MapReduce és el directori d'entrada i sortida a HDFS. El directori d’entrada és dades directori, que s’emmagatzema al camí d’arrel de NameNode . Per fi, especificarem l'element kill si el treball falla.

Ara hem de moure el fitxer WordCountTest a HDFS, tal com hem especificat a oozie.wf.application.path propietat a job.properties dossier. Per tant, estem copiant el fitxer WordCountTest al directori arrel de Hadoop.

Comandament: hadoop fs -put WordCountTest /

Per verificar-ho, podeu anar a la interfície d’usuari de NameNode Web i comprovar si la carpeta s’ha penjat al directori arrel HDFS o no.

Ara ja estem a punt per seguir endavant i executar la tasca de flux de treball.

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

Un cop hàgim executat el nostre treball, obtindrem l’identificador del treball (és a dir, 0000009-171219160449620-oozie-edur-W ) tal com es mostra a la imatge anterior. Podeu anar a comprovar la feina que heu enviat a la interfície d’usuari web d’Oozie, és a dir, localhost: 11000 . Podeu veure a la imatge següent la llista de treballs que hem enviat.

Si observeu a la imatge anterior, veureu l’identificador del treball, el nom del treball, l’estat del treball, l’usuari que l’ha enviat, el moment de la creació, l’inici i l’última modificació. Podeu fer clic a la feina per obtenir més detalls com:

  • Informació sobre la feina

  • Definició del lloc de treball

  • Configuració del treball

A mesura que l'estat del treball es realitza correctament, hem d'anar al directori arrel HDFS i comprovar si el directori de sortida s'ha creat o no.

Com podeu veure que el oozieout s’ha creat el directori a l’HDFS, així que ara examinem el fitxer de sortida que s’ha creat.

Com hem vist com crear una tasca de flux de treball Oozie, ara avançarem en aquest bloc Apache Oozie Tutorial i entendreem com crear una tasca de coordinador.

Tutorial d'Apache Oozie: treball coordinador del recompte de paraules basat en el temps

En aquest exemple, crearem un treball de coordinador de recompte de paraules basat en el temps que s’executarà després d’un interval de temps específic. Podeu crear i programar un treball amb Apache Oozie que cal executar diàriament o periòdicament.

Avancem ràpidament en aquest tutorial d'Apache Oozie i creem una feina de coordinador. Aquí crearem tres fitxers, és a dir, coordinator.properties , coordinator.xml & workflow.xml dossier. De nou, aquí col·locarem el w ordcount pot dins del lib com es mostra a la imatge següent.

Ara vegem aquests fitxers individualment. En primer lloc, començarem amb el fitxer coordinator.properties.

Aquí especifiquem la freqüència amb què s’executarà el flux de treball. La freqüència sempre s’expressa en minuts. En el nostre cas, aquest treball de coordinador s’executarà un cop cada hora entre l’hora especificada. La freqüència s’utilitza per capturar els intervals periòdics en què es produeixen els conjunts de dades i es planifica que s’executin les aplicacions de coordinadors.

Per definir la freqüència en minuts, hores, dies i mesos, utilitzeu el format següent:

$ {coord: minutes (int n)} n $ {coord: minutes (45)} -> 45
$ {coord: hores (int n)} n * 60 $ {coord: hours (3)} -> 180
$ {coord: dies (int n)} variable $ {coord: days (2)} -> minuts en 2 dies complets des de la data actual
$ {coord: months (int n)} variable $ {coord: months (1)} -> minuts en un mes complet des de la data actual

A continuació, definim l’hora d’inici i finalització del treball tal com es mostra a la imatge anterior. l'hora d'inici és la data i hora inicial del treball & temps esgotat és la data i hora final del treball.

A continuació, especifiquem l'URL NameNode i ResourceManager, que s'utilitzarà per referir el fitxer workflow.xml a HDFS i enviar treballs a YARN respectivament. Per fi, especifiquem el camí workflow.xml, que emmagatzemarem a HDFS. També especificarem el camí de l’aplicació on s’emmagatzemaran tots els fitxers i el directori lib.

El segon fitxer és coordinator.xml on utilitzarem totes les propietats que hem especificat al fitxer coordinator.properties dossier. Ara, primer, especificarem les propietats de l’aplicació del coordinador, és a dir, nom, freqüència i zona horària. A continuació, especificarem els fluxos de treball un per un. Aquí només tenim un flux de treball. Per tant, dins de l’element d’acció crearem un element de flux de treball, on especificarem el camí de l’aplicació.

A continuació, per avançar hem de crear workflow.xml on especificarem la tasca. És similar al workflow.xml , que hem creat al treball de flux de treball.

De nou, ho mourem WordCountTest_TimedBased directori a HDFS.

Comandament : hadoop fs -put WordCountTest_TimeBased /

Ara, tots estem preparats per avançar i executar aquesta tasca de coordinador en aquest tutorial d'Oozie. Seguim endavant i l'executem.

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

Anoteu aquest identificador de treball del coordinador (és a dir, 0000010-171219160449620-oozie-edur-C). Us ajudarà a rastrejar la vostra feina a la interfície d’usuari web d’Oozie.

Podeu veure la feina que apareix a la pestanya Treballs del coordinador a la interfície d’usuari web d’Oozie. De manera similar al treball del flux de treball, tenim el nom, l'estat, l'usuari, la freqüència, l'hora d'inici i finalització del treball. Quan feu clic a un treball concret, veureu els detalls del treball, tal com es mostra a les imatges següents.

  • Informació del treball del coordinador

  • Definició del lloc de treball del coordinador

  • Configuració del treball del coordinador

Ara, com hem vist a través de les diferents pestanyes. Tornarem al directori arrel HDFS on es crearà la carpeta de sortida. Com podeu veure a la imatge següent, oozieTimeBasedout s'ha creat el directori, tal com hem especificat a workflow.xml dossier.

Ara fem una ullada al fitxer de sortida que s’ha creat.

Espero que aquest blog d’Apache Oozie Tutorial us hagi estat informatiu. Si esteu interessats en obtenir més informació, podeu fer-ho que us explica el Big Data i com Hadoop està resolent reptes relacionats amb el Big Data.

Ara que heu entès Apache Oozie, consulteu el fitxer per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació en certificació Edureka Big Data Hadoop ajuda els estudiants a convertir-se en experts en HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume i Sqoop mitjançant casos d’ús en temps real en dominis Retail, Social Media, Aviació, Turisme, Finances

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.

què és un token java