Apache Oozie est un outil open-source servant à l’ordonnancement de flux et initialement développé par Yahoo! en 2007 pour faciliter la coordination de jobs Hadoop. Oozie a été accepté en tant que projet Apache Incubator en 2011, et promu en tant que projet Apache Top-Level en 2012.
Depuis sa création, le projet n’a de cesse de s’améliorer et de se voir ajouter de nouvelles fonctionnalités. Sa version 5.0.0, sortie en 2017, a été une évolution majeure offrant de nombreuses améliorations, notamment la prise en charge de la planification à long terme, et la prise en charge des certificats SSL.
Apache Oozie est aujourd’hui largement utilisé dans de nombreuses entreprises pour la coordination de jobs et de workflows Hadoop.
Comment fonctionne Apache Oozie ?
Apache Oozie est un système d’ordonnancement visant à gérer et exécuter des jobs Hadoop dans un environnement distribué. Vous pouvez créer des pipelines en combinant différentes tâches, tels que Hive, MapReduce ou encore Pig.
En tant qu’application web Java open-source, Oozie est responsable du déclenchement de vos différents workflows. La complétion des tâches est détectée selon un principe de callback et de sondage. Lorsque Oozie démarre une tâche, il fournit automatiquement une URL HTTP unique de callback à la tâche et notifie cette URL dès que la tâche est terminée. Dans le cas où la tâche échoue à invoquer l’URL de callback, Oozie peut sonder la tâche pour vérifier si elle est terminée.
Apache Oozie dispose de 3 types de travaux :
Workflow Oozie
Un workflow Oozie est une séquence d’actions organisée en graph acyclique dirigé (DAG). Ces actions dépendent les unes par rapport aux autres, de sorte que la prochaine action ne peut être exécutée qu’après la sortie de l’action précédente.
Différents types d’actions peuvent être créées en fonction du besoin. Le flux de travail et les scripts ou fichiers .jar doivent être positionnés dans le chemin HDFS avant d’exécuter le workflow.
Dans l’hypothèse où nous souhaiterions exécuter plusieurs travaux en parallèle, nous pouvons utiliser Fork. Pour chaque utilisation de Fork, une jointure (Join) doit être utilisée en fin de Fork. Join suppose que tous les nœuds s’exécutant en parallèle sont enfant d’un seul Fork, comme le montre le diagramme suivant.
Oozie Coordinator
Le coordinateur Oozie vous permettra d’ordonnancer des workflows complexes. Il déclenche ces workflows en fonction des prédicats de temps, de données ou d’événements. Ainsi, les workflows commencent dès que la condition donnée est satisfaite.
Les définitions requises pour les travaux de coordination sont les suivantes :
- start : Date et heure de début du travail
- end : Date et heure de fin du travail
- timezone : Fuseau horaire de l’application de coordination
- frequency : En minutes, la fréquence pour l’exécution des travaux
Certaines propriétés supplémentaires sont également disponibles pour les informations de contrôles :
- timeout : Le temps maximum, en minutes, pendant lequel une action attendra de satisfaire les conditions, avant d’être rejetée
- concurrency : Le nombre maximum d’actions pouvant s’exécuter en parallèle
- execution : Ordre d’exécution, parmi FIFO, LIFO et LAST_ONLY
Oozie Bundle
Les bundles Oozie ne sont pas à proprement parler un type de job. Il s’agit d’un regroupement de plusieurs tâches de type coordinator ou workflow. Les bundles en génèrent ainsi leur cycle de vie.
Les fonctionnalités de Oozie
Apache Oozie offre un large éventail de fonctionnalités qui vous permettront de planifier et de coordonner efficacement vos travaux Hadoop. Voici quelques unes des fonctionnalités clé de Oozie :
- Planification automatisée des workflows : Nous l’avons vu précédemment, Oozie permet d’ordonnancer vos workflows selon des conditions de temps, de données ou d’événements.
- Intégration : Oozie est conçu pour s’intégrer simplement avec d’autres outils populaires de Hadoop, tels que Hive, MapReduce, Spark ou HBase.
- Gestion des erreurs : Une fonctionnalité de gestion des erreurs avancée est fournie, permettant aux utilisateurs de prendre les décisions adéquates en cas de problème.
- Interface graphique : Oozie est livré avec une interface graphique conviviale qui permet aux utilisateurs de visualiser et de gérer leurs workflows de manière efficace. Cette GUI fournit également des fonctionnalités de surveillance en temps réel pour les travaux en cours.
Conclusion
Apache Oozie est un outil puissant et flexible qui permet de gérer de manière efficace et coordonnée des travaux et des workflows Hadoop. Grâce à ses fonctionnalités avancées vues dans cet article, Oozie est devenu un incontournable pour l’analyse de données distribuées.
Si vous ou votre client cherchez un moyen efficace pour la gestion de vos workflows Hadoop, Apache Oozie est un outil à considérer sérieusement.