apache

Apache Airflow : qu’est-ce que c’est et comment l’utiliser ?

Bastien L

Bastien L

4 min

Apache Airflow est une plateforme de planification de flux de travail open-source, très utilisée dans le domaine de l’ingénierie des données. Découvrez tout ce que vous devez savoir au sujet de cet outil du Data Engineer : fonctionnement, cas d’usage, composants principaux…

L’histoire de Apache Airflow commence en 2015, dans les bureaux de AirBnB. A cette époque, la plateforme de locations de vacances fondée en 2008 connaît une croissance fulgurante et croule sous un volume de données toujours plus massif.

L’entreprise californienne recrute des Data Scientists, des Data Analysts et des Data Engineers à tour de bras, et ces derniers doivent automatiser de nombreux processus en écrivant des batch jobs planifiés. Afin de les épauler, l’ingénieur des données Maxime Beauchemin crée un outil open-source intitulé Airflow.

Cet outil de planification vise à permettre aux équipes de créer, de surveiller les pipelines de données en lot et d’itérer. En quelques années, Airflow s’est imposé comme un standard dans le domaine du Data Engineering.

En avril 2016, le projet rejoint l’incubateur officiel de la Fondation Apache. Il poursuit son développement et reçoit le statut de projet ” top-niveau ” en janvier 2019. Près de deux ans après, en décembre 2020, Airflow compte plus de 1400 contributeurs, 11 230 contributions, et 19 800 étoiles sur Github.

La version Airflow 2.0 est disponible depuis le 17 décembre 2020, et apporte de nouvelles fonctionnalités et de nombreuses améliorations. Cet outil est utilisé par des milliers de Data Engineers du monde entier.

Qu'est-ce que Apache Airflow ?

La plateforme Apache Airflow permet de créer, de planifier et de surveiller des workflows (flux de travail) par le biais de la programmation informatique. Il s’agit d’une solution totalement open source, très utile pour l’architecture et l’orchestration de pipelines de données complexes et le lancer de tâches.

Elle présente plusieurs avantages. Il s’agit tout d’abord d’une plateforme dynamique, puisque tout ce qui peut être fait avec le code Python peut être fait sur Airflow.

Elle est aussi extensible, grâce à de nombreux plugins permettant l’interaction avec la plupart des systèmes externes les plus communs. Il est aussi possible de créer de nouveaux plugins pour répondre à des besoins spécifiques.

En outre, Airflow apporte une élasticité. Les équipes de Data Engineers peuvent l’utiliser pour exécuter des milliers de tâches différentes chaque jour.

Les workflows sont architecturés et exprimés sous forme de Directed Acyclic Graphs (DAGs), dont chaque noeud représente une tâche spécifique. Airflow est conçue comme une plateforme ” code-first “, permettant d’itérer très rapidement sur les workflows. Cette philosophie offre un haut degré d’extensibilité par rapport à d’autres outils de pipeline.

A quoi sert Airflow ?

Airflow peut être utilisé pour n’importe quel pipeline de données en lot, et ses cas d’usage sont donc aussi nombreux que divers. De par son extensibilité, cette plateforme excelle particulièrement pour l’orchestration de tâches avec des dépendances complexes sur de multiples systèmes externes.

En écrivant des pipelines en code et en utilisant les différents plugins disponibles, il est possible d’intégrer Airflow avec n’importe quels systèmes dépendants depuis une plateforme unifiée pour l’orchestration et le monitoring.

En guise d’exemple, Airflow peut être utilisé pour agréger les mises à jour quotidiennes des équipes de vente à partir de Salesforce pour envoyer un rapport journalier aux exécutifs de l’entreprise.

En outre, la plateforme peut être utilisée pour organiser et lancer des tâches de Machine Learning exécutées sur des clusters Spark externes. Elle permet aussi de charger des données de site web ou d’application vers une Data Warehouse une fois par heure.

Les composants Airwave

L’architecture Airwave repose sur plusieurs éléments. Voici les principaux.

Les DAG

Un DAG (Directed Acyclic Graph) est un pipeline de données défini en code Python. Chaque DAG représente une suite de tâches à exécuter, organisée pour indiquer les relations entre les tâches sur l’interface utilisateur d’Airflow.

Chacun des trois mots de l’acronyme DAG correspond à une propriété de ces tâches. Elles sont ” Directed ” (dirigées), car les tâches doivent avoir au moins une tâche en amont et une tâche en aval.

” Acycliques “, car les tâches ne sont pas autorisées à créer des données auto-référencées afin d’éviter de créer des boucles infinies. Enfin, ” Graph ” (graphiques), car les tâches sont présentées sous une structure claire indiquant leurs relations.

Les tâches

Chaque noeud d’un DAG représente une tâche. Il s’agit d’une représentation visuelle des travaux en cours d’exécution, à chaque étape du flux de travail. Les travaux représentés sont définis par les opérateurs.

Les opérateurs

Les opérateurs sont les blocs de construction de la plateforme Airflow. Ils permettent de déterminer les travaux effectués. Il peut s’agir d’une tâche individuelle ou du noeud d’un DAG, définissant comment la tâche sera exécutée.

Le DAG permet de s’assurer que les opérateurs soient programmés et exécutés dans un ordre précis, tandis que les opérateurs définissent les travaux à exécuter à chaque étape du processus.

On distingue trois catégories principales d’opérateurs. Tout d’abord, les opérateurs d’actions exécutent une fonction. En guise d’exemple, citons le PythonOperator ou le BashOperator.

Les opérateurs de transfert quant à eux permettent de transférer des données depuis une source vers une destination, à l’instar du S3ToRedshiftOperator.

Enfin, les opérateurs de capture restent passifs jusqu’à détecter un événement. C’est le cas du ExternalTaskSensor.

Chaque opérateur est défini individuellement. Toutefois, les opérateurs peuvent se communiquer des informations en utilisant des XComs.

Les Hooks

Sur Airflow, les Hooks permettent l’interface avec des systèmes tiers. Ils permettent de se connecter à des APIs et des bases de données externes comme Hive, S3, GCS, MySQL, Postgres…

Les informations confidentielles, comme les identifiants de connexion, sont conservées en dehors des Hooks. Elles sont stockées dans une base de métadonnées chiffrée associée à l’instance Airflow en cours.

Les plugins

Les plugins Airflow peuvent être décrits comme une combinaison entre les Hooks et les Opérateurs. Ils sont utilisés pour accomplir certaines tâches spécifiques impliquant une application externe.

Il peut s’agir par exemple du transfert de données à partir de Salesforce vers Redshift. Il existe une vaste collection open-source de plugins créés par la communauté d’utilisateurs, et chaque utilisateur peut créer des plugins pour répondre à ses besoins spécifiques.

Les connexions

Les ” connexions ” permettent à Airflow de stocker des informations, permettant de se connecter à des systèmes externes comme des identifiants ou des tokens d’API.

Elles sont gérées directement depuis l’interface utilisateur de la plateforme. Les données sont chiffrées et stockées sous forme de métadonnées dans une base de données Postgres ou MySQL.

Comment apprendre à utiliser Airflow ?

Pour apprendre à utiliser Airflow, vous pouvez tout simplement suivre une formation Apache Airflow. La maîtrise de cette solution compte parmi les compétences que vous pouvez acquérir en suivant notre formation de Data Engineer,  ou notre formation de Machine Learning Engineer.

Vous savez tout sur Apache Airflow. Découvrez notre dossier complet sur la plateforme de conteneurs Docker, et sur Snowflake la Data Warehouse Cloud.