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

-
4
 m de lecture
-
apache

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.0est 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) : Graphe orienté acyclique en français 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 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.

Quels sont les différents composants d'Airflow ?

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

Les DAG

Dans Airflow, les pipelines sont représentés sous forme de DAG (Directed Acyclic Graph) défini en Python. 

Un graphe est une structure composée d’objets (nœuds) dans laquelle certaines paires d’objets sont en relation.

Ils sont  » Directed  » (orientés), cela veut dire que les arrêtes du graphes sont orientées, et qu’elles représentent donc des liens unidirectionnels.

 » Acycliques « , car les graphes ne possèdent pas de circuit. C’est à dire  qu’un nœud B en aval d’un nœud A ne pas également être en amont du nœud A. Ceci permet de s’assurer que les pipelines ne comportent pas de boucles infinies.

Les tâches

Chaque noeud d’un DAG représente une tâche. Il s’agit d’une représentation d’une suite de tâches à effectuer, qui constitue une pipeline. 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 (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 Sensors (capteurs) permettent d’attendre qu’une condition soit vérifiée. Par exemple, on peut utiliser l’opérateur FileSensor pour attendre qu’un fichier soit présent dans un dossier donné, avant de continuer l’execution du pipeline.

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.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?