Qu'est-ce que Airflow?
Apache Airflow est un gestionnaire de flux de travail avancé et un outil indispensable dans l'arsenal de l'ingénieur de données moderne.
Airflow vous permet de créer des flux de travail sous la forme de graphes acycliques dirigés (DAG) de tâches. Divers utilitaires de ligne de commande effectuent des opérations complexes sur le DAG. L'interface utilisateur visualise facilement les pipelines s'exécutant dans un environnement de production, surveille la progression et dépanne si nécessaire.
Créez, planifiez et contrôlez votre flux de travail par programmation. Il fournit une abstraction fonctionnelle sous la forme d'un DAG idempotent (Directed Acyclic Graph). Une fonction en tant que service d'abstraction pour effectuer des tâches à des intervalles spécifiés.
Cluster avec un nœud Airflow
Dans un cluster Airflow à nœud unique, tous les composants (travailleur, planificateur, serveur Web) sont installés sur un nœud unique appelé « nœud maître ». Pour mettre à l'échelle, un cluster à nœud unique Airflow
doit être configuré dans LocalExecutor
. Le travailleur prend (extrait) une tâche de la file d'attente IPC (communication inter-processus), cela évolue très bien tant que les ressources sont disponibles sur le nœud maître . Pour mettre à l'échelle Airflow sur plusieurs nœuds, vous devez activer Celery Executor
.

Architecture à nœud unique Airflow
Cluster multinœud Airflow
Airflow . - , , , . , Airflow CeleryExecutor
.
Celery CeleryExecutor
Airflow. / Celery Redis RabbitMQ. RabbitMQ — . — . IPC, , RabbitMQ — . RabbitMQ / , Celery . .

Airflow
Celery:
Celery — , . , . Airflow . Airflow Airflow, .
Airflow Celery:
. CentOS 7 Linux.
- RabbitMQ
yum install epel-release yum install rabbitmq-server
- RabbitMQ Server
systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service
- - RabbitMQ
rabbitmq-plugins enable rabbitmq_management

rabbitmq — 15672
, - — admin/admin
.

-
pyamqp
RabbitMQ PostGreSQL
pip install pyamqp
amqp://
— , librabbitmq, , py-amqp
, .
pyamqp://
librabbitmq://
, , . pyamqp://
amqp
(http://github.com/celery/py-amqp)
PostGreSQL: psycopg2
Psycopg — PostgreSQL Python.
pip install psycopg2
- Airflow.
pip install 'apache-airflow[all]'
airflow
airflow version

Airflow v1.10.0, .
airflow initdb
, . Airflow .
- Celery
Celery .
pip install celery==4.3.0
Celery
celery --version 4.3.0 (rhubarb)
- airflow.cfg Celery Executor.
executor = CeleryExecutor sql_alchemy_conn = postgresql+psycopg2://airflow:airflow@{HOSTNAME}/airflow broker_url= pyamqp://guest:guest@{RabbitMQ-HOSTNAME}:5672/ celery_result_backend = db+postgresql://airflow:airflow@{HOSTNAME}/airflow dags_are_paused_at_creation = True load_examples = False
airflow.cfg
airflow airflow initdb
, airflow
.
- airflow
# default port is 8080 airflow webserver -p 8000
# start the scheduler airflow scheduler
airflow .
airflow worker
Une fois que vous avez terminé de démarrer les différents services de flux d'air, vous pouvez consulter la fantastique interface de flux d'air avec la commande:
http://<IP-ADDRESS/HOSTNAME>:8000
comme nous avons spécifié le port 8000 dans notre commande de démarrage du service webserver, sinon le numéro de port par défaut est 8080.
Oui! Nous avons fini de créer un cluster avec l'architecture multinœud Airflow. :)