Ci-dessous une compilation de mes notes prises lors de la présentation d’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 !