Comment configurer un cluster Airflow multinœud avec Celery et RabbitMQ

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.







  1. RabbitMQ


yum install epel-release
yum install rabbitmq-server
      
      





  1. RabbitMQ Server


systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
      
      





  1. - RabbitMQ


rabbitmq-plugins enable rabbitmq_management
      
      











rabbitmq — 15672



, - — admin/admin



.













  1. 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
      
      





  1. Airflow.


pip install 'apache-airflow[all]'
      
      





airflow







airflow version
      
      











Airflow v1.10.0, .









airflow initdb
      
      





, . Airflow .







  1. Celery


Celery .







pip install celery==4.3.0
      
      





Celery







celery --version
4.3.0 (rhubarb)
      
      





  1. 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. :)








All Articles