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 :
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.
3) Vérifiez le bon fonctionnement
Ce qui donne :
1 2 3 4 |
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 :
1 |
$ oozie admin -oozie http://localhost:11000/oozie -shareliblist |
1 2 3 4 5 6 7 |
[Available ShareLib] oozie hive distcp hcatalog sqoop pig |
Afficher le contenu d’un sharelib :
1 |
$ oozie admin -oozie http://localhost:11000/oozie -sharelib pig* |
1 2 3 |
[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
1 |
hadoop fs -put mysql-connector-java-5.0.8-bin.jar /oozie/share/lib/lib_20161114094203/sqoop/ |
1 |
oozie admin -oozie http://localhost:11000/oozie -sharelibupdate |
1 |
oozie admin -oozie http://localhost:11000/oozie -sharelib sqoop* |
1 2 3 4 5 6 |
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)
1 2 3 4 5 6 |
nameNode=maprfs:/// jobTracker=maprfs:/// queueName=default oozie.use.system.libpath=true oozie.wf.rerun.failnodes=true oozie.wf.application.path=maprfs:/user/mapr/mysql/ |