oozieDémarrer avec oozie


Remarques

Oozie est un projet open source Apache, développé à l'origine chez Yahoo. Oozie est un système de planification à usage général pour les travaux Hadoop multi-étapes.

  • Oozie permet de former un regroupement logique des tâches Hadoop pertinentes dans une entité appelée Workflow . Les workflows d'Oozie sont des DAG (Directed Cyclic Graph) d'actions.
  • Oozie permet de planifier le workflow en fonction de l' heure ou des données à l' aide d'une entité appelée Coordinator .
  • De plus, vous pouvez combiner les coordinateurs associés dans une entité appelée Bundle et peut être programmé sur un serveur Oozie pour exécution.

Oozie prend en charge la plupart des tâches Hadoop en tant que nœuds d’action Oozie: MapRedude , Java , FileSystem (opérations HDFS), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCp et Sqoop . Il fournit une capacité de décision à l'aide d'une action Decision Control Node et d'une exécution parallèle des travaux à l'aide d'un Fork-Join Control Node . Il permet aux utilisateurs de configurer une option de messagerie pour la notification de réussite / échec du flux de travail en utilisant une action de Email .

Versions

Version d'Oozie Date de sortie
4.3.0 2016-12-02

Installation ou configuration

Conditions préalables

Cet article a démontré l'installation d'ozo-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

Etape 1: fichier dist

Récupère le fichier oozie tar.gz depuis http://www-eu.apache.org/dist/oozie/4.3.0/ et extrait-le

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

Step2: Construire Oozie

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

Étape 3: Installation du serveur

Copiez les fichiers binaires générés 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 .
 

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

 cd $HOME/oozie
 mkdir libext
 

Note : Bibliothèque ExtJS (2.2+) (facultative, pour activer Oozie webconsole) Mais, la bibliothèque ExtJS n'est pas livrée avec Oozie car elle utilise une licence différente :( Vous devez maintenant mettre des jarres hadoop dans le répertoire libext, sinon erreur dans le fichier oozie.log

WARN ActionStartXCommand: 523 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] JETON [] APP [map-reduction-wf] JOB [0000000-161215143751620-oozie-hado-W] ACTION [0000000-161215143751620- oozie-hado-W @ mr-node] Erreur lors du démarrage de l'action [mr-node]. ErrorType [TRANSIENT], ErrorCode [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 bocaux 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/
 

Etape 3.2: Oozie Impersonate Pour éviter toute 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 soit huser et que l'hôte soit localhost et que le groupe soit 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éparer la guerre

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

Cela créera le fichier oozie.war dans le répertoire oozie. Si cette guerre sera utilisée plus loin, vous pouvez faire face à cette erreur:

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

Pourquoi? car la compilation oozie produisait les 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 guerre de préparation

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

Étape 3.4: Créer sharelib sur HDFS

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

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

org.apache.oozie.service.ServiceException: E0104: Impossible d'initialiser complètement le service [org.apache.oozie.service.ShareLibService], Impossible de mettre en cache sharelib. Un administrateur doit installer le fichier sharelib avec oozie-setup.sh et lancer la commande CLI 'oozie admin' pour mettre à jour le fichier sharelib.

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

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

Ajouter la propriété ci-dessous

<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 de 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émarrage du 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 vous référer à cette URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Maintenant, vous pouvez soumettre des travaux de hadoop à Oozie dans votre terminal.

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

Vous pouvez faire face à 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 De localhost.localdomain / 127.0.0.1 à 0.0.0.0:10020 a échoué à l'exception de la connexion: java.net.ConnectException: connexion refusée; Pour plus de détails, voir: http://wiki.apache.org/hadoop/ConnectionRefused

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 le suivant:

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

dans votre cas, cela peut être différent, car j'utilise apache hadoop, vous utilisez peut-être cloudera / hdp / Quoi

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