oozieKomma igång med oozie


Anmärkningar

Oozie är ett Apache-open source-projekt som ursprungligen utvecklats på Yahoo. Oozie är ett generellt schemaläggningssystem för Hadoop-jobb i flera steg.

  • Oozie tillåter att bilda en logisk gruppering av relevanta Hadoop-jobb till en enhet som heter Workflow . Oozie-arbetsflödena är DAG (Riktad cyklisk graf) av åtgärder.
  • Oozie tillhandahåller ett sätt att schemalägga Time- eller Data- beroende arbetsflöde med hjälp av en enhet som heter Coordinator .
  • Vidare kan du kombinera de relaterade koordinatorerna till en enhet som heter Bundle och kan schemaläggas på en Oozie-server för körning.

Oozie stöder de flesta av Hadoop Jobb som Oozie Action Noder som: MapRedude , Java , FileSystem (HDFS-operationer), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCp och Sqoop . Det tillhandahåller en beslutsfunktion med hjälp av en Decision Control Node och parallellkörning av jobb med hjälp av Fork-Join Control Node . Det gör det möjligt för användare att konfigurera e-postalternativet för meddelande om framgång / misslyckande om arbetsflödet med Email poståtgärd.

versioner

Oozie version Utgivningsdatum
4.3.0 2016/12/02

Installation eller installation

Förutsättningar

Den här artikeln demonstrerade installation av oozie-4.3.0 på Hadoop 2.7.3

  1. Java 1.7+
  2. Hadoop 2.x (här, 2.7.3)
  3. Maven3 +
  4. Unix-rutan

Steg 1: Dist-fil

Hämta oozie tar.gz-fil från http://www-eu.apache.org/dist/oozie/4.3.0/ och extrahera den

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

Steg 2: Bygg Oozie

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

Steg: Serverinstallation

Kopiera de inbyggda binärerna till hemkatalogen som 'oozie'

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

Steg 3.1: libext Skapa libext-katalog i oozie-katalogen

 cd $HOME/oozie
 mkdir libext
 

Obs : ExtJS (2.2+) -bibliotek (valfritt, för att aktivera Oozie webconsole). Men ExtJS-biblioteket är inte med i Oozie eftersom det använder en annan licens :( Nu måste du lägga hadoop burkar i libext-katalogen, annars kommer det att kasta nedan fel i oozie.log-filen

VARNING ActionStartXCommand: 523 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] TOKEN [] APP [map-reduc-wf] JOB [0000000-161215143751620-oozie-hado-W] ACTION [0000000-161215143751620- oozie-hado-W @ mr-node] Fel vid start av åtgärd [mr-node]. ErrorType [TRANSIENT], ErrorCode [JA009], Message [JA009: Kan inte initiera Cluster. Kontrollera din konfiguration för mapreduce.framework.name och motsvarande serveradresser.]

Så låt oss lägga ned burkar i libext-katalogen

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/
 

Steg 3.2: Oozie impersonate Om du vill undvika fel på oozie ändrar du core-site.xml som nedan

<!-- 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>
 

Antagande att min oozie-användare är huser och värd är localhost och gruppen är hadoop

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

Obs! Du kan använda * i alla värden, i händelse av förvirring

Steg 3.3: Förbered kriget

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

Detta skapar oozie.war-fil i oozie-katalogen. Om detta krig kommer att användas vidare kan du möta detta fel:

FEL ActionStartXCommand: 517 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] TOKEN [] APP [map-reducera-wf] JOB [0000000-161220104605103-oozie-hado-W] ACTION [0000000-161220104605103- oozie-hado-W @ mr-node] Error, java.lang.NoSuchFieldError: HADOOP_CLASSPATH

Varför? Eftersom oozie-samlingen producerade Hadoop 2.6.0-burkar även när Hadoop 2.7.3 specificerades med alternativet "-Dhadoop.version = 2.7.3".

Så, för att undvika detta fel, kopiera filen oozie.war till en annan katalog

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/
 

Regenerera sedan oozie.war-binärerna för oozie med ett förberedelsekrig

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

Steg 3.4: Skapa sharelib på HDFS

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

Nu kan denna sharelib-uppsättning ge dig nedanstående fel:

org.apache.oozie.service.ServiceException: E0104: Kunde inte fullständigt initialisera tjänsten [org.apache.oozie.service.ShareLibService], Kan inte cache sharelib. En administratör måste installera sharelib med oozie-setup.sh och utfärda CLI-kommandot 'oozie admin' för att uppdatera sharelib

För att undvika detta, ändra oozie-site.xml som nedan

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

Lägg till egendom nedan

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

Värdet ska vara din $ HADOOP_HOME / etc / hadoop, där alla hadoop-konfigurationsfiler finns.

Steg 3.5: Skapa Oozie DB

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

Steg 3.6: Starta Daemon

För att starta Oozie som en demon använda följande kommando:

./bin/oozied.sh start
 

Att stanna

./bin/oozied.sh stop
 

kolla loggar för eventuella fel

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

Använd följande kommando för att kontrollera statusen för Oozie från kommandoraden:

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

Steg 4: Klientinstallation

$ 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
 

Lägg till $ HOME / oozie-client / bin till PATH-variabeln i .bashrc-fil och starta om din terminal eller göra

source $HOME/.bashrc
 

För mer information om konfigurering, kan du hänvisa till denna URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Nu kan du skicka in Hadoop-jobb till oozie i din terminal.

För att köra ett exempel kan du följa denna URL och ställa in ditt första exempel för att köra https://oozie.apache.org/docs/4.3.0/DG_Examples.html

Det kan uppstå fel under nedan när du kör kartan för att minska exemplet i ovanstående URL

java.io.IOException: java.net.ConnectException: Ring från localhost.localdomain / 127.0.0.1 till 0.0.0.0:10020 misslyckades vid undantag från anslutningen: java.net.ConnectException: Anslutning avvisades; Mer information finns på: http://wiki.apache.org/hadoop/ConnectionRefused

Lösning: Starta mr-jobhistory-server.sh

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

En annan punkt att notera om att ändra job.properties-fil är:

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

i ditt fall kan detta vara annorlunda, eftersom jag använder apache hadoop, kanske du använder cloudera / hdp / vad som helst

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