Como configurar um cluster multinó do Airflow com Celery e RabbitMQ

O que é o Airflow?







Apache Airflow é um gerenciador de fluxo de trabalho avançado e uma ferramenta indispensável no arsenal do engenheiro de dados moderno.







O Airflow permite que você crie fluxos de trabalho na forma de gráficos acíclicos direcionados (DAGs) de tarefas. Uma variedade de utilitários de linha de comando executam operações complexas no DAG. A interface do usuário visualiza facilmente pipelines em execução em um ambiente de produção, monitora o andamento e soluciona problemas conforme necessário.







Crie, planeje e controle seu fluxo de trabalho programaticamente. Ele fornece uma abstração funcional na forma de um DAG (Directed Acyclic Graph) idempotente. Uma função como um serviço de abstração para realizar tarefas em intervalos especificados.







Cluster com um nó Airflow







Em um cluster de nó único do Airflow, todos os componentes (trabalhador, agendador, servidor da web) são instalados em um único nó conhecido como " mestre ". Para escalar um único cluster de nó Airflow



deve ser configurado em LocalExecutor



. O trabalhador pega (puxa) uma tarefa da fila IPC (comunicação entre processos), isso pode ser escalado muito bem, desde que os recursos estejam disponíveis no mestre . Para dimensionar o Airflow em vários nós, você precisa habilitar Celery Executor



.













Arquitetura de nó único do Airflow







Cluster multinó do 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
      
      





Quando terminar de iniciar os vários serviços de fluxo de ar, você pode verificar a fantástica interface de fluxo de ar com o comando:







http://<IP-ADDRESS/HOSTNAME>:8000
      
      





conforme especificamos a porta 8000 em nosso comando de início de serviço do servidor da web, caso contrário, o número da porta padrão é 8080.







Sim! Concluímos a criação de um cluster com a arquitetura multinó do Airflow. :)








All Articles