Le futur de l'orchestration de workflows dans Hadoop : Oozie 5.x
23 mai 2018
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
Au DataWorks Summit Europe 2018 de Berlin, j’ai eu l’occasion d’assister à une session sur Apache Oozie. La présentation se concentre sur les caractéristiques du prochain Oozie 5.0 et celles à venir dans la branche 5.X. Elle détaille ainsi le Workflow Scheduler d’Apache Ambari et son utilisation pour créer et visualiser des workflows Apache Oozie.
La conférence intitulée “Breathing New Life into Apache Oozie with Apache Ambari Workflow Manager” était donnée par Artem Ervits, solutions engineer chez HortonWorks, et Clay Baenziger, membre de l’équipe infrastructure Hadoop chez Bloomberg. Les slides de la présentation sont disponibles ici.
Apache Oozie
Apache Oozie est l’orchestrateur de workflows privilégié de l’écosystème d’Apache Hadoop. Il permet aux utilisateurs d’exécuter une série d’actions en tant que Graphe Orienté Acyclique (Directed Acyclical Graph ou DAG) et comporte des actions natives pour la plupart des composants Hadoop tels que Hive, Sqoop, Distcp, etc… Une action shell est également présente : César en démontre les possibilités dans cet article.
Oozie est utilisé en production chez l’un de nos clients pour gérer des milliers de workflows, allant jusqu’à plusieurs centaines de jobs par jour dans un environnement sécurisé (comprendre Kerberos + SSL).
C’est un outil très puissant, qui a cependant quelques points faibles. L’un des principaux est son UI vieillissante. Nous espérons que les prochaines releases y pallieront, voir dès aujourd’hui avec Oozie 5.0, annoncé seulement 24h avant la conférence d’Artem et Clay. Voyons maintenant quelles sont ces nouveautés.
YARN Application Master
Enfin ! Si vous utilisez Oozie, vous comprendrez que cette fonctionnalité était attendue. Les launchers Oozie ne sont plus des tâches map du framework MapReduce mais désormais des Applications Master YARN à part entière. Je me demandais à quoi cela ressemblait alors j’ai téléchargé et compilé la dernière version d’Oozie pour la déployer sur un cluster de test.
Voici un aperçu de job sous Oozie 5.0 effectuant une action shell :
Cela n’a pas l’air si important mais les committers Oozie travaillent sur ce sujet depuis longtemps (voir OOZIE-1770). Ils ont dû réimplémenter de nombreux morceaux de code pour y parvenir. Un des inconvénients (néanmoins très acceptable) est que Oozie 5.X ne supporte plus les version 1.X de Hadoop : la version minimale est désormais la 2.6.0. Parmi tous les changements, on peut noter la disparition de l’ancien launcher en tâche map dans OOZIE-2918.
Alternatives à la WebUI Oozie
Tous les utilisateurs d’Oozie savent que la WebUI est une catastrophe. Elle est basée sur ExtJS, un framework JavaScript obsolète, ce qui n’améliore pas sa maintenabilité. Malheureusement, aucune véritable avancée n’est à noter par rapport à la refonte de cette UI mais les discussions des committers Oozie à ce sujet peuvent être suivies ici. Espérons qu’une future release d’Oozie 5.X sera accompagnée d’une nouvelle UI.
En attendant, il y a des alternatives notables telles que Hue (Hadoop User Experience) ou le Workflow Manager d’Ambari.
Ce Workflow Manager est en fait une Ambari View qui peut également être déployée sur un cluster non-Ambari, ce que nous avons déjà fait pour un de nos clients chez Adaltas. Cette vue se présente sous la forme d’une GUI dans laquelle on peut construire et éditer des workflows Oozie mais aussi les gérer et les visualiser.
Autorisations
Dans la release 4.2 de Oozie (dernière version supportée dans HDP 2.6.4), il n’y a pas de concept d’autorisations fines.
En effet, comme nous pouvons le constater dans la documentation officielle, le modèle est assez basique :
Users have read access to all jobs
Users have write access to their own jobs
Users have write access to jobs based on an Access Control List (list of users and groups)
Users have read access to admin operations
Admin users have write access to all jobs
Admin users have write access to admin operation
Il suffit d’avoir accès à la WebUI pour avoir un accès en lecture à tous les workflows, ce qui est assez problématique dans un environnement multi-tenant. Heureusement, la communauté est en train d’y travailler dans OOZIE-3196. Rien n’est encore officiellement publié mais un patch est déjà disponible.
Oozie diagnostic bundle tool
Une autre nouveauté remarquable est l’outil de paquetage pour le debugage de workflows. A l’origine développé en tant que fonctionnalité du Cloudera Manager, cet outil facilite la récolte d’informations utiles pour diagnostiquer un job : workflow.xml, job.properties, logs Oozie, variables d’environnements, etc.
Voici un exemple d’utilisation :
bin/oozie-diag-bundle-collector.sh -jobs 0000002-180425152941870-oozie-oozi-W -oozie $OOZIE_URL -output bundle.zip
Checking Connection...Done
Using Temporary Directory: /tmp/1525342998391-0
Getting Sharelib Information...Done
Getting Configuration...Done
Getting OS Environment Variables...Done
Getting Java System Properties...Done
Getting Queue Dump...Done
Getting Thread Dump...Done
Getting Instrumentation...Skipping (Instrumentation is unavailable)
Getting Metrics...Done
Getting Details for 0000002-180425152941870-oozie-oozi-W...Done
Creating Zip File: /opt/oozie-5.1.0-SNAPSHOT/bundle.zip/oozie-diag-bundle-1525343435346.zip...Done
C’est utile pour rassembler rapidement toutes les informations nécéssaires lorsqu’un job ne fonctionne pas correctement. Malheureusement, il n’est pas encore capable de collecter les logs des containers YARN des différentes actions, mais c’est une fonctionnalité qui devrait bientôt voir le jour.
Quand pourrais-je utiliser ces fonctionnalités ?
A ce stade de l’article, vous vous demandez sans doute :
Génial ! Mais j’utilise HDP 2.X.X/Cloudera 5.X.X, quand vais-je pouvoir utiliser toutes ces nouveautés ?
La réponse est… pas encore. HDP 3.0 d’Hortonworks va très probablement être annoncé cet été cependant (d’après Artem Ervits), Oozie 5.0 a raté le train et n’apparaitra pas dans la stack, même s’il est possible de le voir apparaitre dans HDP 3.1. Au moment d’écrire ces lignes, la dernière version d’Oozie supportée par HortonWorks est la 4.2.0, avec un certain nombre de patch backportés (liste complète disponible ici).
Même son de cloche de l’autre côté de la baie de San Francisco chez Cloudera. La dernière version officielle est la 4.1.0 mais encore une fois de nombreuses fonctionnalités (certaines venant même de Oozie 5.X) sont disponibles comme on peut le constater dans CDH 5.14.2.
Voici donc le tour des nouveautés dans Oozie 5.X, j’espère que cet article vous donne l’envie de vous lancer et de compiler la dernière version de cet outil très puissant. Je vous encourage vivement à le faire, c’est plus facile qu’il n’apparaît de builder et de déployer dans un environnement Hadoop de test.
Lectures complémentaires
- Présentation de Artem Ervits et Clay Baenziger’s talk at DataWorks Summit Europe 2018
- Article sur la relase 5.0 de Oozie
- Oozie sur GitHub
- Oozie JIRA 1770
- Oozie JIRA 2918
- Oozie JIRA 2683
- Oozie JIRA 3196
- Article sur Hue
- Oozie 5.0 release logs
- Liste des patches backportés par HortonWorks dans Oozie 4.2.0
- Release notes de Cloudera pour Oozie 4.1.0