Was ist Luftstrom?
Apache Airflow ist ein fortschrittlicher Workflow-Manager und ein unverzichtbares Werkzeug im Arsenal moderner Dateningenieure.
Mit Airflow können Sie Workflows in Form von gerichteten azyklischen Diagrammen (DAGs) von Aufgaben erstellen. Eine Vielzahl von Befehlszeilenprogrammen führt komplexe Vorgänge auf der DAG aus. Die Benutzeroberfläche visualisiert auf einfache Weise Pipelines, die in einer Produktionsumgebung ausgeführt werden, überwacht den Fortschritt und behebt bei Bedarf Fehler.
Erstellen, planen und steuern Sie Ihren Workflow programmgesteuert. Es bietet eine funktionale Abstraktion in Form einer idempotenten DAG (Directed Acyclic Graph). Eine Funktion als Abstraktionsdienst zum Ausführen von Aufgaben in bestimmten Intervallen.
Cluster mit einem Luftstromknoten
In einem Airflow-Cluster mit einem einzelnen Knoten werden alle Komponenten (Worker, Scheduler, Webserver) auf einem einzelnen Knoten installiert, der als " Master- Knoten" bezeichnet wird. Zum Skalieren Airflow
muss ein einzelner Knotencluster in konfiguriert werden LocalExecutor
. Der Worker übernimmt (zieht) eine Aufgabe aus der IPC-Warteschlange (Inter-Process Communication). Diese skaliert sehr gut, solange die Ressourcen auf dem Master- Knoten verfügbar sind. Um den Luftstrom über mehrere Knoten zu skalieren, müssen Sie ihn aktivieren Celery Executor
.

Airflow-Einzelknotenarchitektur
Luftstrom-Multinode-Cluster
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
Sobald Sie mit dem Starten der verschiedenen Luftstromdienste fertig sind, können Sie die fantastische Luftstromschnittstelle mit dem folgenden Befehl überprüfen:
http://<IP-ADDRESS/HOSTNAME>:8000
Wie wir in unserem Startbefehl für den Webserver-Dienst Port 8000 angegeben haben, lautet die Standardportnummer 8080.
Ja! Wir haben die Erstellung eines Clusters mit der Airflow-Multinode-Architektur abgeschlossen. :) :)