So richten Sie einen Multinode-Airflow-Cluster mit Sellerie und RabbitMQ ein

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.







  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
      
      





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








All Articles