Maitrisez vos workflows avec Apache Airflow
17 juil. 2016
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.
Ci-dessous une compilation de mes notes prises lors de la présentation d’Apache Airflow par Christian Trebing de chez BlueYonder.
Introduction
Use case : comment traiter des données arrivant régulièrement de leurs clients ?
- Option 1 : utiliser le CRON
- Uniquement des déclancheurs temporels
- Compliqué de gérer les erreurs
- Peu commode lors du chevauchement d’un job en cours avec le lancement du suivant
- Option 2 : écrire un outil de gestion des workflows
- Très facile au début
- Arrivée rapide aux limites : il reste à investir plus que prévu ou faire avec
- Option 3 : utiliser un outil de gestion de workflows Open Source
- Beaucoup d’options
- BlueYonder a choisi Apache Airflow
Apache Airflow
Apache Airflow est un outil de gestion et supervision de workflows comme Apache Oozie or Azkaban
- Écrit en Python
- Workflows définis en Python
- Interface présentant une vue des jobs actuels et passés & les logs des jobs
- Extensible via des plugins
- Développement du projet actif
- Propose une belle UI et une interface REST
- Relativement léger (2 processus et une base de données)
Développement
Un job Airflow est composé de plusieurs opérateurs, un opérateur étant une étape du job, et de senseurs pour récupérer les données entrantes. Dans un workflow, le DAG doit être construit à la main opérateur par opérateur.
Plusieurs opérateurs sont disponibles dans Airflow :
- BashOperator
- SimpleHttpOperator
- …
et senseurs :
- HttpSensor
- HdfsSensor
- …
Ou vous pouvez implémenter vos propres opérateurs / senseurs en Python. Airflow supporte également le dédoublement de flux dans un workflow (branching).
Gestion de l’état
- Les variables sont relatives à l’instance Airflow
- Les communications extérieures (gestion des flux entrants) sont gérées au niveau du DAG.
- Ces états sont persistés dans la base de donnée de gestion.
Déploiement
Airflow utilise deux processus et une base de données :
- Scheduler
- Server web
- Base de données : PostgreSQL, SQLite, …
Notes
- Airflow ne gère pas la personnification d’utilisateurs, cela doit être fait à la main
- La Haute Disponibilité n’est pas supportée nativement
- Le use case présenté n’avait pas de besoin de connexion à un serveur Kerberos et en Haute Disponibilité
Conclusion
Airflow semble être une très bonne alternative à Oozie et ses workflows XML. Nous aurions adoré qu’il utilise JavaScript et NodeJS plutôt que Python !