So können Sie mit CeleryExecutor und Kubernetes bis zu 1000 parallele Airflow 2.0-Aufgaben in 5 Minuten aus dem Nichts ausführen

Michal Milosz
Michal Milosz
May 29, 2025
9 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Die neue Version von Airflow ermöglicht es den Nutzern, Workflows noch effizienter zu verwalten. Wir haben einige Änderungen in unseren Artikeln ausführlich beschrieben und können die verbesserte Performance bestätigen. Die Fähigkeit von Apache Airflow, parallele Tasks auszuführen – ermöglicht durch Kubernetes und Celery Executor – spart viel Zeit. Damit kannst du sogar 1000 parallele Tasks in nur 5 Minuten ausführen. Klingt das spannend?

Einleitung
Airflow ist eine beliebte Workflow-Management-Software für die Programmentwicklung, Aufgabenplanung und Workflow-Überwachung. Sie hat ihre eigenen Möglichkeiten und Einschränkungen. Kann man 1000 parallele Tasks in Airflow ausführen? Wie du dir denken kannst – ja! In diesem Fall kommt der Celery Executor zum Einsatz. Airflow bietet viele Executor-Optionen, aber für viele Tasks eignet sich der Celery Executor besonders gut. In dieser Übung haben wir Teile unseres neuesten Produkts verwendet, das auf dem Airflow 2.0 Service basiert und von DS Stream aktiv entwickelt wird (daher können wir den vollständigen Code zur Reproduktion des Jobs nicht bereitstellen). Wenn du an Details interessiert bist, kontaktiere bitte den Vertrieb. Bald werden weitere Informationen zu diesem Projekt auch auf unserer Website verfügbar sein.

Celery Executor
Beginnen wir mit einer Erklärung, was ein Executor im Airflow-System ist. Dies ist der Mechanismus, mit dem geplante Tasks ausgeführt werden. Ein Worker ist ein Prozessor oder Node, der die eigentliche Aufgabe ausführt. Wenn wir über parallele Tasks in Apache Airflow sprechen, müssen wir bedenken, dass Airflow selbst keine Tasks ausführt. Es übergibt sie an den Executor, der dann für die Ausführung der Tasks mit optimaler Ressourcennutzung verantwortlich ist. Celery ist eine asynchrone Task-Queue. Sie kann geplante Tasks auf mehrere Celery Workers verteilen. Wenn wir den Celery Executor in der Airflow-Konfiguration verwenden, wird die Arbeitslast über einen Message Broker (z. B. RabbitMQ oder Redis) auf viele Celery Workers verteilt. Der Executor veröffentlicht eine Anfrage zur Ausführung des Tasks in einer Queue, und einer der Worker nimmt die Anfrage entgegen und führt sie aus. RabbitMQ ist ein Open Source Message Broker, der für die richtige Arbeitsverteilung zwischen den Workern und die erfolgreiche Kommunikation zwischen Executor und Workern sorgt. Der letzte Schritt bei der richtigen Konfiguration des Celery Executor ist die Verwendung einer externen Datenbank wie PostgreSQL. Dies ermöglicht die Aufgabenplanung und Echtzeitverarbeitung. Die Datenbank ist ein externer Dienstleister und kann für horizontale Skalierung genutzt werden, wobei die Worker auf mehrere Maschinen im Pipeline verteilt werden.

properly configuring Celery Executor

Airflow-Konfiguration – parallele Tasks
Wir werden unser System auf dem Kubernetes Service in Microsoft Azure betreiben. Dazu muss das Docker Image konfiguriert werden, das im Airflow-Setup verwendet wird. Wir verwenden das apache/airflow Image in Version 2.1.4, das unter https://hub.docker.com verfügbar ist. Der Code für das Dockerfile ist unten zu finden:
Im app/-Verzeichnis befindet sich ein dags/-Ordner mit allen DAGs sowie die airflow.cfg, die zur Konfiguration von Airflow dient. Die airflow.cfg-Vorlage ist auf dem Airflow-Github verfügbar. Dies sind die wichtigsten Parameter, die gesetzt werden müssen, um 1000 parallele Tasks mit dem Celery Executor ausführen zu können:

  • executor = CeleryExecutor
  • worker_concurrency = 36 (diese Variable gibt an, wie viele Tasks parallel auf einem Worker laufen können; in diesem Fall werden 28 Worker verwendet, also benötigen wir 36 parallele Tasks – 28 * 36 = 1008)
  • parallelism = 1000 (ermöglicht das Ausführen von 1000 Tasks parallel)
  • max_active_tasks_per_dag = 1000 (ermöglicht das Ausführen von 1000 Tasks parallel für einen DAG)
  • max_queued_runs_per_dag = 1000 (erlaubt das parallele Queuing von 1000 Tasks in einem DAG)

Als Nächstes müssen vier weitere yaml-Dateien erstellt werden, die die notwendigen Deployments, Services und ConfigMaps in Kubernetes erzeugen:

  • namespace.yaml
  • postgres.yaml
  • airflow.yaml
  • celery.yaml

Im nächsten Schritt muss die Kubernetes-Umgebung in Azure vorbereitet werden (Cluster erstellen und ein Image auf Basis des zuvor erstellten Dockerfile bauen).
Danach müssen alle Deployments im Cluster mit kubectl und den vorbereiteten yaml-Dateien erstellt werden.
Fertig! Nach wenigen Minuten ist das Airflow-Setup konfiguriert, das das gleichzeitige Ausführen von 1000 Tasks ermöglicht! Dies kann mit dem Befehl “kubectl --namespace=airflow get all” überprüft werden.
Der für dieses Beispiel erstellte DAG ist so konzipiert, dass er 100 Sekunden schläft.

Ausführen paralleler Tasks in Airflow — Test der Konfiguration
Abschließend bleibt nur noch zu prüfen, ob die Tasks korrekt starten. Dazu wird der Beispiel-DAG ausgeführt.

Fazit
Wir freuen uns, dass wir dir Tipps zur Konfiguration von Airflow geben konnten. Du kannst von unseren Empfehlungen profitieren, um parallele Tasks in Apache Airflow reibungslos auszuführen. Wir haben bewiesen, dass es möglich ist, in kurzer Zeit ein Airflow-Setup zu erstellen, das sogar 1000 parallele Tasks ausführen kann! Das ist wirklich beeindruckend! Das bedeutet, dass Airflow sowohl für kleine, wenig anspruchsvolle Projekte als auch für viel größere Projekte mit Hunderten oder sogar Tausend Tasks eingesetzt werden kann.
Wie kann Airflow deinem Unternehmen helfen? Besuche unsere Data Pipeline Automation Seite und finde eine Lösung, die zu deinen Anforderungen passt. Der gesamte Airflow-Startprozess wird durch unsere Anwendung automatisiert, sodass du die gesamte Infrastruktur mit nur einem Klick einrichten kannst. Bei der Entwicklung werden moderne Konzepte und Technologien wie CI/CD, Terraform oder Kubernetes verwendet. Für weitere Details — kontaktiere bitte den Vertrieb.

Airflow 2-0 leistungsverbesserung mit smart sensors

Rest api in airflow 2-0 was sie wissen mussen

Python:  Code-Prüfung in IDE + Github.

Share this post
DevOps
Michal Milosz
MORE POSTS BY THIS AUTHOR
Michal Milosz

Curious how we can support your business?

TALK TO US