Démarrer avec oozie

Installation ou configuration

Conditions préalables

Cet article a démontré l’installation d’oozie-4.3.0 sur Hadoop 2.7.3

1.Java 1.7+ 2. Hadoop 2.x (ici, 2.7.3) 3. Maven3+ 4. Boîte Unix

Étape 1 : fichier Dist

Obtenez le fichier oozie tar.gz de http://www-eu.apache.org/dist/oozie/4.3.0/ et extrayez-le

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

Étape 2 : Construisez Oozie

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

Étape 3 : Installation du serveur

Copiez les binaires construits dans le répertoire personnel en tant que “oozie”

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

Étape 3.1 : libext Créer un répertoire libext dans le répertoire oozie

 cd $HOME/oozie
 mkdir libext

Remarque : bibliothèque ExtJS (2.2+) (facultatif, pour activer la console Web Oozie) Mais, la bibliothèque ExtJS n’est pas fournie avec Oozie car elle utilise une licence différente :( Maintenant, vous devez mettre les jarres hadoop dans le répertoire libext, sinon l’erreur ci-dessous sera renvoyée dans le fichier oozie.log

AVERTIR ActionStartXCommand:523 - SERVEUR[data01.teg.io] UTILISATEUR[hadoop] GROUPE[-] JETON[] APPLICATION[map-reduce-wf] EMPLOI[0000000-161215143751620-oozie-hado-W] ACTION[[email protected]] Erreur de démarrage action [nœud-mr]. Type d’erreur [TRANSIENT], Code d’erreur [JA009], Message [JA009 : Impossible d’initialiser le cluster. Veuillez vérifier votre configuration pour mapreduce.framework.name et les adresses de serveur correspondantes.]

Alors, mettons ci-dessous les jars dans le répertoire 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/

Étape 3.2 : Usurpation d’Oozie Pour éviter une erreur d’emprunt d’identité sur oozie, modifiez core-site.xml comme ci-dessous

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

En supposant que mon utilisateur oozie est huser et que l’hôte est localhost et que le groupe est hadoop

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

Note : Vous pouvez utiliser * dans toutes les valeurs, en cas de confusion

Étape 3.3 : Préparez la guerre

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

Cela créera un fichier oozie.war dans le répertoire oozie. Si cette guerre sera utilisée plus loin, vous pourriez rencontrer cette erreur :

ERREUR ActionStartXCommand : 517 - SERVEUR[data01.teg.io] UTILISATEUR[hadoop] GROUPE[-] JETON[] APPLICATION[map-reduce-wf] EMPLOI[0000000-161220104605103-oozie-hado-W] Erreur ACTION[[email protected]], java.lang.NoSuchFieldError : HADOOP_CLASSPATH

Pourquoi? car, la compilation oozie produisait des jarres Hadoop 2.6.0 même en spécifiant Hadoop 2.7.3 avec l’option “-Dhadoop.version=2.7.3”.

Donc, pour éviter cette erreur, copiez le fichier oozie.war dans un autre répertoire

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/

Ensuite, régénérez les binaires oozie.war pour oozie avec une préparation de guerre

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

Étape 3.4 : Créer une bibliothèque de partage sur HDFS

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

Maintenant, cette configuration de sharelib peut vous donner l’erreur ci-dessous :

org.apache.oozie.service.ServiceException : E0104 : Impossible de initialiser le service [org.apache.oozie.service.ShareLibService], Non capable de mettre en cache sharelib. Un administrateur doit installer le sharelib avec oozie-setup.sh et émettez la commande CLI ‘oozie admin’ pour mettre à jour le sharelib

Pour éviter cela, modifiez oozie-site.xml comme ci-dessous

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

Ajouter ci-dessous la propriété

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

La valeur doit être votre $HADOOP_HOME/etc/hadoop, où tous les fichiers de configuration hadoop sont présents.

Étape 3.5 : Créer une base de données Oozie

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

Étape 3.6 : Démarrer le démon

Pour démarrer Oozie en tant que démon, utilisez la commande suivante :

./bin/oozied.sh start

Arrêter

./bin/oozied.sh stop

vérifier les journaux pour les erreurs, le cas échéant

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

Utilisez la commande suivante pour vérifier l’état d’Oozie à partir de la ligne de commande :

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

Étape 4 : Installation du client

$ 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

Ajoutez $HOME/oozie-client/bin à la variable PATH dans le fichier .bashrc et redémarrez votre terminal ou faites

source $HOME/.bashrc

Pour plus de détails sur la configuration, vous pouvez consulter cette URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Vous pouvez maintenant soumettre des travaux hadoop à oozie dans votre terminal.

Pour exécuter un exemple, vous pouvez suivre cette URL et configurer votre premier exemple pour qu’il s’exécute https://oozie.apache.org/docs/4.3.0/DG_Examples.html

Vous pouvez rencontrer l’erreur ci-dessous lors de l’exécution de l’exemple de réduction de carte dans l’URL ci-dessus

java.io.IOException : java.net.ConnectException : appel depuis localhost.localdomain/127.0.0.1 à 0.0.0.0:10020 a échoué lors de la connexion exception : java.net.ConnectException : connexion refusée ; Pour plus détails voir : http://wiki.apache.org/hadoop/ConnectionRefused

La solution: Démarrez mr-jobhistory-server.sh

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

Un autre point à noter concernant la modification du fichier job.properties est :

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

dans votre cas, cela peut être différent, comme j’utilise apache hadoop, vous utilisez peut-être cloudera/hdp/anything

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