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 " nó 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 nó 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.
- 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
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. :)