oozieAan de slag met oozie


Opmerkingen

Oozie is een open source-project van Apache, oorspronkelijk ontwikkeld bij Yahoo. Oozie is een algemeen planningssysteem voor Hadst-banen met meerdere fasen.

  • Met Oozie kan een logische groepering van relevante Hadoop-taken worden gevormd in een entiteit met de naam Workflow . De Oozie-workflows zijn DAG (Directed cyclische grafiek) van acties.
  • Oozie biedt een manier om tijd- of gegevensafhankelijke workflow te plannen met behulp van een entiteit met de naam Coordinator .
  • Verder kunt u de gerelateerde coördinatoren combineren tot een entiteit met de naam Bundle en kan deze op een Oozie-server worden gepland voor uitvoering.

Oozie ondersteunt de meeste Hadoop-taken zoals Oozie-actienodes zoals: MapRedude , Java , FileSystem (HDFS-bewerkingen), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCp en Sqoop . Het biedt een beslissingsmogelijkheid met behulp van een Decision Control Node en parallelle uitvoering van de taken met behulp van Fork-Join Control Node . Hiermee kunnen gebruikers de e-mailoptie configureren voor de melding Succes / Mislukking van de workflow met behulp van Email mailactie.

versies

Oozie-versie Publicatiedatum
4.3.0 2016/12/02

Installatie of instellingen

Pre-requisites

Dit artikel demonstreerde de installatie van oozie-4.3.0 op Hadoop 2.7.3

  1. Java 1.7+
  2. Hadoop 2.x (hier, 2.7.3)
  3. Maven3 +
  4. Unix-doos

Stap 1: Dist-bestand

Download het oozie tar.gz-bestand van http://www-eu.apache.org/dist/oozie/4.3.0/ en pak het uit

cd $HOME
tar -xvf oozie-4.3.0.tar.gz
 

Stap 2: Bouw Oozie

cd $HOME/oozie-4.3.0/bin
./mkdistro.sh -DskipTests
 

Stap 3: Serverinstallatie

Kopieer de ingebouwde binaries naar de home directory als 'oozie'

cd $HOME
cp -R $HOME/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0 .
 

Stap 3.1: libext Maak een libext-directory in de oozie-directory

 cd $HOME/oozie
 mkdir libext
 

Opmerking : ExtJS (2.2+) bibliotheek (optioneel, om Oozie webconsole in te schakelen) Maar de ExtJS bibliotheek is niet gebundeld met Oozie omdat het een andere licentie gebruikt :( Nu moet je hadoop potten in de libext directory plaatsen, anders zal het hieronder gooien fout in het bestand oozie.log

WARN ActionStartXCommand: 523 - SERVER [data01.teg.io] GEBRUIKER [hadoop] GROEP [-] TOKEN [] APP [map-reduce-wf] JOB [0000000-161215143751620-oozie-hado-W] ACTIE [0000000-161215143751620- oozie-hado-W @ mr-node] Fout bij starten van actie [mr-node]. ErrorType [TRANSIENT], ErrorCode [JA009], Message [JA009: Cluster kan niet worden geïnitialiseerd. Controleer uw configuratie op mapreduce.framework.name en de bijbehorende serveradressen.]

Laten we dus de potten in de libext-directory plaatsen

cp $HADOOP_HOME/share/hadoop/common/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/common/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/lib/*.jar oozie/libext/
 

Stap 3.2: Oozie imiteren Om imitatie-fout op oozie te voorkomen, wijzigt u core-site.xml zoals hieronder

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>
 

Ervan uitgaande dat mijn oozie-gebruiker huser is en host localhost en groep is hadoop

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.huser.hosts</name>
    <value>localhost</value>
  </property>
  <property>
    <name>hadoop.proxyuser.huser.groups</name>
    <value>hadoop</value>
  </property>
 

Opmerking: u kunt * in alle waarden gebruiken, in geval van verwarring

Stap 3.3: Bereid de oorlog voor

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

Hiermee wordt het bestand oozie.war in de map oozie gemaakt. Als deze oorlog verder zal worden gebruikt, kunt u deze fout tegenkomen:

FOUT ActionStartXCommand: 517 - SERVER [data01.teg.io] GEBRUIKER [hadoop] GROEP [-] TOKEN [] APP [map-reduce-wf] JOB [0000000-161220104605103-oozie-hado-W] ACTIE [0000000-161220104605103- oozie-hado-W @ mr-node] Fout, java.lang.NoSuchFieldError: HADOOP_CLASSPATH

Waarom? omdat de oozie-compilatie Hadoop 2.6.0-potten produceerde, zelfs bij het opgeven van Hadoop 2.7.3 met de optie "-Dhadoop.version = 2.7.3".

Kopieer het bestand oozie.war dus naar een andere map om deze fout te voorkomen

mkdir $HOME/oozie_war_dir
cp $HOME/oozie/oozie.war $HOME/oozie_war_dir
cd $HOME/oozie_war_dir
jar -xvf oozie.war
rm -f oozie.war/WEB-INF/lib/hadoop-*.jar
rm -f oozie.war/WEB-INF/lib/hive-*.jar
rm oozie.war
jar -cvf oozie.war ./*
cp oozie.war $HOME/oozie/
 

Regenereer vervolgens de oozie.war binaries voor oozie met een voorbereidende oorlog

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

Stap 3.4: Maak sharelib op HDFS

cd $HOME/oozie/bin
./oozie-setup.sh sharelib create -fs hdfs://localhost:9000
 

Nu kan deze sharelib-instelling u de onderstaande foutmelding geven:

org.apache.oozie.service.ServiceException: E0104: Kon service niet volledig initialiseren [org.apache.oozie.service.ShareLibService], kan Sharelib niet in cache plaatsen. Een beheerder moet de sharelib installeren met oozie-setup.sh en de opdracht 'oozie admin' CLI geven om de sharelib bij te werken

Wijzig om dit te voorkomen oozie-site.xml zoals hieronder

cd $HOME/oozie
vi conf/oozie-site.xml
 

Voeg onderstaande eigenschap toe

<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
    <value>*=/usr/local/hadoop/etc/hadoop/</value>
</property>
 

De waarde moet uw $ HADOOP_HOME / etc / hadoop zijn, waar alle Hadoop-configuratiebestanden aanwezig zijn.

Stap 3.5: Maak Oozie DB

cd $HOME/oozie
./bin/ooziedb.sh create -sqlfile oozie.sql -run
 

Stap 3.6: Start Daemon

Om Oozie als een daemon te starten, gebruik je het volgende commando:

./bin/oozied.sh start
 

Stoppen

./bin/oozied.sh stop
 

controleer de logboeken op eventuele fouten

cd $HOME/oozie/logs
tail -100f oozie.log
 

Gebruik de volgende opdracht om de status van Oozie te controleren vanaf de opdrachtregel:

$ ./bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL
 

Stap 4: Clientinstallatie

$ cd
$ cp oozie/oozie-client-4.3.0.tar.gz .
$ tar -xvf oozie-client-4.3.0.tar.gz
$ mv oozie-client-3.3.2 oozie-client
$ cd bin
 

Voeg $ HOME / oozie-client / bin toe aan de PATH-variabele in het .bashrc-bestand en start uw terminal opnieuw of doe het

source $HOME/.bashrc
 

Voor meer informatie over het instellen kunt u deze URL raadplegen https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Nu kunt u Hadoop-taken naar Oozie in uw terminal verzenden.

Om een voorbeeld uit te voeren, kunt u deze URL volgen en uw eerste voorbeeld instellen om https://oozie.apache.org/docs/4.3.0/DG_Examples.html uit te voeren

U kunt geconfronteerd worden met onderstaande fout tijdens het uitvoeren van de kaart verkleinen voorbeeld in bovenstaande URL

java.io.IOException: java.net.ConnectException: call van localhost.localdomain / 127.0.0.1 tot 0.0.0.0:10020 mislukt bij verbindingsuitzondering: java.net.ConnectException: verbinding geweigerd; Zie voor meer informatie: http://wiki.apache.org/hadoop/ConnectionRefused

Oplossing: start mr-jobhistory-server.sh

cd $HADOOP_HOME/sbin
./mr-jobhistory-server.sh start historyserver
 

Een ander punt om op te merken over het wijzigen van het bestand job.properties is:

nameNode=hdfs://localhost:9000
jobTracker=localhost:8032
 

in uw geval kan dit anders zijn, aangezien ik apache hadoop gebruik, gebruikt u mogelijk cloudera / hdp / iets

To run spark job, I have tried running in local[*], yarn-client and
yarn-cluster as master, but succeeded in local[*] only