oozieRozpoczęcie pracy z oozie


Uwagi

Oozie to projekt open source Apache, pierwotnie opracowany w Yahoo. Oozie to system planowania ogólnego przeznaczenia dla wielostopniowych zadań Hadoop.

  • Oozie pozwala na logiczne grupowanie odpowiednich zadań Hadoop w jednostkę o nazwie Workflow . Przepływy pracy Oozie to DAG (Directed cyclic graph) akcji.
  • Oozie zapewnia sposób planowania przepływu pracy zależnego od czasu lub danych za pomocą podmiotu o nazwie Coordinator .
  • Ponadto można łączyć powiązanych koordynatorów w jednostkę o nazwie Bundle i można go zaplanować na serwerze Oozie do wykonania.

Oozie poparcie większości Hadoop Praca jako Oozie węzłów działania jak: MapRedude , Java , FileSystem (operacje HDFS), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCp i Sqoop . Zapewnia możliwość podejmowania decyzji za pomocą działania Decision Control Node i równoległego wykonywania zadań za pomocą Fork-Join Control Node . Umożliwia użytkownikom skonfigurowanie opcji e-mail dla powiadomienia o sukcesie / niepowodzeniu przepływu pracy za pomocą akcji Email .

Wersje

Wersja Oozie Data wydania
4.3.0 02.12.2016

Instalacja lub konfiguracja

Warunki wstępne

W tym artykule zademonstrowano instalację oozie-4.3.0 na Hadoop 2.7.3

  1. Java 1.7+
  2. Hadoop 2.x (tutaj, 2.7.3)
  3. Maven3 +
  4. Pudełko Unix

Krok 1: plik Dist

Pobierz plik oozie tar.gz z http://www-eu.apache.org/dist/oozie/4.3.0/ i rozpakuj go

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

Krok 2: Zbuduj Oozie

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

Krok 3: Instalacja serwera

Skopiuj wbudowane pliki binarne do katalogu domowego jako „oozie”

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

Krok 3.1: libext Utwórz katalog libext w katalogu oozie

 cd $HOME/oozie
 mkdir libext
 

Uwaga : biblioteka ExtJS (2.2+) (opcjonalnie, aby włączyć konsolę internetową Oozie) Ale biblioteka ExtJS nie jest dołączona do Oozie, ponieważ używa innej licencji :( Teraz musisz umieścić słoiki hadoop w katalogu libext, w przeciwnym razie zostanie on wyrzucony poniżej błąd w pliku oozie.log

OSTRZEŻENIE ActionStartXCommand: 523 - SERWER [data01.teg.io] UŻYTKOWNIK [hadoop] GRUPA [-] TOKEN [] APP [mapa-redukcja-wf] ZADANIE [0000000-161215143751620-oozie-hado-W] DZIAŁANIE [0000000-161215143751620- oozie-hado-W @ mr-node] Błąd uruchamiania akcji [mr-node]. ErrorType [TRANSIENT], ErrorCode [JA009], Komunikat [JA009: Nie można zainicjować klastra. Sprawdź swoją konfigurację pod kątem mapreduce.framework.name i odpowiednich adresów serwerów.]

A więc, umieśćmy poniżej słoików w katalogu libext

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/
 

Krok 3.2: Oozie personifikuje Aby uniknąć personifikacji błędu w oozie, zmodyfikuj plik core-site.xml jak poniżej

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

Zakładając, że mój użytkownik oozie to huser, a host to localhost, a grupa to hadoop

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

Uwaga: Możesz użyć * we wszystkich wartościach, w przypadku pomyłki

Krok 3.3: Przygotuj wojnę

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

Spowoduje to utworzenie pliku oozie.war w katalogu oozie. Jeśli ta wojna zostanie wykorzystana dalej, możesz napotkać ten błąd:

BŁĄD ActionStartXCommand: 517 - SERWER [data01.teg.io] UŻYTKOWNIK [hadoop] GRUPA [-] TOKEN [] APP [mapa-redukcja-wf] ZADANIE [0000000-161220104605103-oozie-hado-W] DZIAŁANIE [0000000-161220104605103- oozie-hado-W @ mr-node] Błąd, java.lang.NoSuchFieldError: HADOOP_CLASSPATH

Dlaczego? ponieważ kompilacja oozie wytworzyła słoiki Hadoop 2.6.0, nawet jeśli określono Hadoop 2.7.3 z opcją „-Dhadoop.version = 2.7.3”.

Aby uniknąć tego błędu, skopiuj plik oozie.war do innego katalogu

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/
 

Następnie zregeneruj pliki binarne oozie.war dla oozie za pomocą wojny przygotowawczej

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

Krok 3.4: Utwórz sharelib na HDFS

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

Teraz ta konfiguracja sharelib może powodować błąd poniżej:

org.apache.oozie.service.ServiceException: E0104: Nie można w pełni zainicjować usługi [org.apache.oozie.service.ShareLibService], Nie można buforować sharelib. Administrator musi zainstalować plik sharelib w pliku oozie-setup.sh i wydać polecenie CLI „oozie admin”, aby zaktualizować plik sharelib

Aby tego uniknąć, zmodyfikuj plik oozie-site.xml jak poniżej

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

Dodaj poniżej właściwości

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

Powinna to być wartość $ HADOOP_HOME / etc / hadoop, w której znajdują się wszystkie pliki konfiguracyjne hadoop.

Krok 3.5: Utwórz Oozie DB

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

Krok 3.6: Uruchom demona

Aby uruchomić Oozie jako demona, użyj następującego polecenia:

./bin/oozied.sh start
 

Zatrzymać

./bin/oozied.sh stop
 

sprawdź dzienniki pod kątem ewentualnych błędów

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

Użyj następującego polecenia, aby sprawdzić status Oozie z wiersza poleceń:

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

Krok 4: Instalacja klienta

$ 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
 

Dodaj $ HOME / oozie-client / bin do zmiennej PATH w pliku .bashrc i zrestartuj terminal lub zrób

source $HOME/.bashrc
 

Aby uzyskać więcej informacji na temat konfiguracji, możesz odnieść się do tego adresu URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Teraz możesz przesyłać zadania hadoop do oozie w swoim terminalu.

Aby uruchomić przykład, możesz postępować zgodnie z tym adresem URL i skonfigurować swój pierwszy przykład do uruchomienia https://oozie.apache.org/docs/4.3.0/DG_Examples.html

Możesz napotkać błąd poniżej podczas uruchamiania mapy, zmniejsz przykład w powyższym adresie URL

java.io.IOException: java.net.ConnectException: Call From localhost.localdomain / 127.0.0.1 do 0.0.0.0:10020 nie powiodło się w przypadku wyjątku połączenia: java.net.ConnectException: Połączenie odrzucone; Aby uzyskać więcej informacji, zobacz: http://wiki.apache.org/hadoop/ConnectionRefused

Rozwiązanie: Uruchom mr-jobhistory-server.sh

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

Kolejną kwestią, na którą należy zwrócić uwagę przy modyfikowaniu pliku job.properties, jest:

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

w twoim przypadku może być inaczej, ponieważ używam apache hadoop, możesz używać cloudera / hdp / cokolwiek

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