Une introduction à Apache Airflow

Qu’est-ce qu’Airflow ?

Airflow est une plateforme créée par la communauté pour programmer la création, la programmation et le suivi des flux de travail. Le « machine learning » est un sujet d’actualité dans l’industrie. Ce ne sera pas aussi cool si ce n’est pour le traitement des données qu’il implique

Airflow est un outil d’orchestration de flux de travail ETL (Extraction, Transformation, Chargement), utilisé dans les pipelines de transformation de données.

Utilisations d’Airflow

Imaginez que vous avez un modèle de ML qui fait l’analyse des sentiments sur Twitter. Vous voulez maintenant faire fonctionner ce modèle pour vos personnes préférées sur twitter pour leurs tweets quotidiens. Un tel flux de travail ressemblerait à quelque chose comme ça.

Comme vous pouvez le voir, les données circulent d’un bout à l’autre du pipeline. Il peut y avoir des branches, mais pas de cycles.

Quels problèmes Airflow résout t-il ?

Les couronnes sont une méthode séculaire de planification des tâches.

Avec cron, créer et maintenir une relation entre les tâches est un cauchemar, alors que, dans Airflow, c’est aussi simple qu’écrire du code Python.Cron a besoin d’un soutien externe pour enregistrer, suivre et gérer les tâches. Interface utilisateur d’Airflow pour suivre et contrôler l’exécution du flux de travail
Les travaux de Cron ne sont pas reproductibles, sauf s’ils sont configurés à l’extérieur. L’Airflow conserve une piste d’audit de toutes les tâches exécutées.

Extensible
Comment définir un flux de travail dans Airflow ?
Les flux de travail sont définis à l’aide de fichiers Python.

DAG
Airflow fournit la classe DAG Python pour créer un graphique acyclique dirigé, une représentation du flux de travail.

Airflow a 4 composantes principales.

Serveur web
Le serveur web est le composant qui est responsable de la gestion de toutes les API de l’interface utilisateur et de REST.

Planificateur
Le planificateur passe en revue les DAG toutes les n secondes et programme la tâche à exécuter.

Le planificateur possède également un composant interne appelé Executor. L’exécuteur est responsable de la rotation des travailleurs et de l’exécution de la tâche jusqu’à son achèvement.

Worker
Les travailleurs exécutent la tâche qui leur est confiée par l’exécuteur testamentaire.

Types d’exécuteurs
SequentialExecutor
SequentialExecutor n’exécute qu’une seule tâche à la fois. Les travailleurs font fonctionner la même machine que le planificateur.

  • Pour :
    • Simple et facile à mettre en place
    • Bon pour tester les DAG en cours de développement
    • Contre
      • Non évolutif
      • Il ne peut pas exécuter plusieurs tâches en même temps.
      • Ne convient pas à la production
      • Exécuteur local
      • L’exécuteur local est le même que l’exécuteur séquentiel, sauf qu’il peut exécuter plusieurs tâches à la fois.

Pour :

  • Peut exécuter plusieurs tâches
  • Bon pour le fonctionnement des GAD pendant le développement

Contre

  • Non évolutif
  • Un seul point de défaillance
  • Ne convient pas à la production
  • CeleryExécuteur
  • Celery est utilisé pour exécuter des tâches python asynchrones distribuées.

CeleryExecutor fait donc partie d’Airflow depuis longtemps, avant même Kubernetes.

CeleryExecutors a un nombre fixe d’employés qui courent chercher les tâches au fur et à mesure qu’elles sont programmées.

Pour

  • Il offre une certaine évolutivité.
  • Celery gère les travailleurs. En cas d’échec, Celery en fait tourner un nouveau.

Contre

  • Celery a besoin de RabbitMQ/Redis to pour faire la queue, ce qui revient à réinventer la roue de ce qu’Airflow supporte déjà.
  • Cette dépendance rend également l’installation complexe.
  • KubernetesExecutor
  • KubernetesExécuteur exécute chaque tâche dans un pod Kubernetes individuel. Contrairement à CeleryCelery, il fait tourner les pods des travailleurs à la demande, permettant ainsi une utilisation maximale des ressources.

Pour

  • Il combine les avantages de l’évolutivité et de la simplicité de CeleryExecutor et de LocalExecutor.
  • Contrôle précis des ressources allouées aux tâches. On peut définir la quantité de CPU/mémoire requise au niveau d’une tâche.

Contre
Kubernetes est nouveau pour Airflow, et la documentation n’est pas simple.

Articles connexes

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

TESTEZ LA PERFORMANCE DIGITALE DE VOTRE SITE EN 5 MINUTES, CLIQUEZ ICI :
parcours-performance-digitale
parcours-performance-digitale
CONTACTEZ-NOUS
Une question, une campagne media à lancer ?
Vous êtes au bon endroit !
WINDOWS SERVER
VOUS AVEZ AIMÉ
COVID-19