Mettre à jour sa bibliothèque de partage HDFS pour les applications de workflow Oozie

Si vous êtes tombés sur cette page c’est que vous cherchez des informations sur les «  share libraries »( sharelib) Oozie. Vous le savez sans doute,  Oozie prend en charge les bibliothèques partagés pour vos  tâches de workflow. Ainsi, ces bibliothèques partagées peuvent simplifier le déploiement et la gestion des composants communs dans vos workflows. Les bibliothèques partagées Oozie sont organisées par type d'action ( pig, hive, sqoop..) Par exemple :
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/hsqldb-1.8.0.10.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/sqoop-1.4.4-hadoop200.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/oozie-sharelib-sqoop-4.1.0-mapr-1606.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/commons-io-2.4.jar

Lister les sharelib disponibles :

$ oozie admin -oozie http://localhost:11000/oozie -shareliblist
[Available ShareLib]
    oozie
    hive
    distcp
    hcatalog
    sqoop
    pig

 Afficher le contenu d’un sharelib  :

$ oozie admin -oozie http://localhost:11000/oozie -sharelib pig*
[Available ShareLib]    pig
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/pig/pig.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/pig/piggybank.jar

Maintenant, vous souhaitez ajouter un jar dans les share libraries.

(C'est un peu le sujet de cet article....)  Procédez en suivant les étapes suivantes : 1) Copiez votre jar local vers hdfs
hadoop fs -put mysql-connector-java-5.0.8-bin.jar /oozie/share/lib/lib_20161114094203/sqoop/
2) Mettez à jour votre serveur Oozie avec la commande sharelibupdate Cette option fait en sorte que le ou les serveurs oozie récupèrent la dernière version de sharelib présente dans le répertoir oozie.service.WorkflowAppService.system.libpath Le but principal est de mettre à jour le sharelib sur le serveur oozie sans redémarrer.
oozie admin -oozie http://localhost:11000/oozie -sharelibupdate
3) Vérifiez le bon fonctionnement
oozie admin -oozie http://localhost:11000/oozie -sharelib sqoop*
Ce qui donne :
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/hsqldb-1.8.0.10.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/sqoop-1.4.4-hadoop200.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/oozie-sharelib-sqoop-4.1.0-mapr-1606.jar
hdfs:///oozie/share/lib/lib_20161114094203/sqoop/commons-io-2.4.jar
hdfs://localhost:9000/oozie/share/lib/lib_20161114094203/sqoop/oozie-sharelib-sqoop-4.1.0-mapr-1606.jar
hdfs:///oozie/share/lib/lib_20161114094203/sqoop/mysql-connector-java-5.0.8-bin.jar

 A savoir

Une tâche de workflow (via job.properties) peut spécifier un chemin de bibliothèque partagée à l'aide de la propriété job oozie.libpath et  peut utiliser la bibliothèque de partage système en définissant la propriété job oozie.use.system.libpath à true. Exemple de fichier de job.properties (pour MapR)
 nameNode=maprfs:///
jobTracker=maprfs:///
queueName=default
oozie.use.system.libpath=true
oozie.wf.rerun.failnodes=true
oozie.wf.application.path=maprfs:/user/mapr/mysql/
 

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.