Die neue Version von Airflow ermöglicht es Benutzern, Arbeitsabläufe effizienter zu verwalten. Wir haben einige Änderungen in unseren Artikeln ausführlich beschrieben und können Ihnen versichern, dass die Leistung verbessert wurde. Die Fähigkeit von Apache Airflow, parallele Aufgaben auszuführen, die durch die Verwendung von Kubernetes und Celery Executor gewährleistet wird, ermöglicht es Ihnen, viel Zeit zu sparen. Sie können damit sogar 1000 parallele Aufgaben in nur 5 Minuten ausführen. Bist du schon fasziniert?
Einführung
Airflow ist eine beliebte Workflow-Management-Software für die Programmentwicklung, Aufgabenplanung und Workflow-Überwachung. Sie hat ihre eigenen Fähigkeiten und Einschränkungen. Können Sie 1000 parallele Aufgaben in Airflow ausführen? Wie Sie sich vorstellen können — ja! In diesem Fall kommt Celery Executor zur Hilfe. Airflow bietet viele Executoren, aber für mehrere Aufgaben ist es gut, Celery Executor zu verwenden. In dieser Übung haben wir Teile unseres neuesten Produkts verwendet, das auf dem Airflow 2.0-Dienst basiert, der von DS Stream aktiv entwickelt wird (daher können wir nicht den vollständigen Code für die Neuerstellung des Jobs bereitstellen). Wenn Sie an Einzelheiten interessiert sind, bitte Vertrieb kontaktieren. In Kürze werden weitere Informationen zu diesem Projekt auch unter verfügbar sein unsere Website.
Celery Testamentsvollstrecker
Lassen Sie uns zunächst erklären, was ein Executor im Airflow-System ist. Dies ist ein Mechanismus, mit dem geplante Aufgaben ausgeführt werden. Der Worker ist ein Prozessor oder ein Knoten, der die eigentliche Aufgabe ausführt. Wenn wir über parallele Apache Airflow-Aufgaben sprechen, müssen wir bedenken, dass Airflow selbst keine Aufgaben ausführt. Es leitet sie einfach an den Executor weiter, der dann dafür verantwortlich ist, diese Aufgabe unter optimaler Nutzung der verfügbaren Ressourcen auszuführen. Celery ist eine asynchrone Aufgabenwarteschlange. Sie ist in der Lage, geplante Aufgaben an mehrere Mitarbeiter von Sellerie zu verteilen. Wenn wir also Celery Executor im Airflow-Setup verwenden, wird die Arbeitslast mithilfe eines Message-Brokers (z. B. RabbitMQ oder Redis) auf viele Mitarbeiter verteilt. Der Executor veröffentlicht eine Anfrage zur Ausführung der Aufgabe in einer Warteschlange, und einer von mehreren Workern erhält die Anfrage und führt sie aus. RabbitMQ ist ein Open-Source-Message-Broker-Programm. Es gewährleistet eine angemessene Arbeitsteilung zwischen Arbeitnehmern und eine erfolgreiche Kommunikation zwischen Testamentsvollstrecker und Arbeitern. Der letzte Schritt bei der ordnungsgemäßen Konfiguration von Celery Executor ist die Verwendung einer externen Datenbank wie PostgreSQL. Dies ermöglicht die Planung von Aufgaben und die Verarbeitung in Echtzeit. Bei der Datenbank handelt es sich um einen externen Auftragnehmer. Sie kann für die horizontale Skalierung verwendet werden, bei der Mitarbeiter auf mehrere Maschinen in einer Pipeline verteilt sind.

Airflow konfigurieren — parallele Aufgaben
Wir werden unser System auf dem Kubernetes Service in Microsoft Azure ausführen. Konfigurieren Sie dazu das Docker-Image, das im Airflow-Setup verwendet wird. Bei der Erstellung verwenden wir das Apache/airflow Image in Version 2.1.4, verfügbar unter https://hub.docker.com. Der Code von Dockerfile ist unten:
In der App/im Ordner gibt es einen dags/ Ordner, der alle DAGs und die Datei airflow.cfg enthält, die zur Konfiguration des Airflow-Setups verwendet wird. Die Vorlagendatei airflow.cfg ist auf dem Airflow-Github verfügbar. Dies sind die wichtigsten Parameter, die eingestellt werden müssen, um 1000 parallele Aufgaben mit Celery Executor ausführen zu können:
- Executor = CeleryExecutor
- worker_concurrency = 36 <- diese Variable gibt an, wie viele Aufgaben parallel auf einem Worker ausgeführt werden können (in diesem Fall werden 28 Worker verwendet, also benötigen wir 36 parallele Aufgaben - 28 * 36 = 1008)
- Parallelität = 1000 <- ermöglicht die parallele Ausführung von 1000 Aufgaben
- max_active_tasks_per_dag = 1000 <- ermöglicht die parallele Ausführung von 1000 Aufgaben für eine DAG
- max_queued_runs_per_dag = 1000 <- ermöglicht das parallele Einreihen von 1000 Aufgaben in einer DAG
Als Nächstes müssen wir 4 weitere Yaml-Dateien erstellen, die die erforderlichen Bereitstellungen, Dienste und ConfigMaps in Kubernetes erstellen:
- Namespace.yaml
- postgres.yaml
- airflow.yaml
- celery.yaml
Im nächsten Schritt müssen Sie die Kubernetes-Umgebung in Azure vorbereiten (einen Cluster erstellen und ein Image erstellen, das auf dem zuvor vorbereiteten Dockerfile basiert)
Nach diesem Schritt müssen Sie nur noch alle Bereitstellungen auf dem Cluster mit kubectl und den vorbereiteten Yaml-Dateien erstellen
Bumm! Nach ein paar Minuten haben wir das Airflow-Setup konfiguriert, sodass 1000 Aufgaben gleichzeitig ausgeführt werden können! Wir sollten eine Bestätigung dieser Tatsache erhalten, nachdem wir den Befehl ausgeführt haben“kubectl --namespace=airflow alles abrufen“:

Die für dieses Beispiel erstellte DAG ist so konzipiert, dass sie 100 Sekunden lang schläft.
Parallele Airflow-Aufgaben ausführen — Konfigurationen testen
Schließlich müssen Sie nur noch überprüfen, ob die Aufgaben korrekt gestartet werden. Zu diesem Zweck führen wir unsere Beispiel-DAG aus:




Fazit
Wir freuen uns, dass wir Ihnen einige Tipps zur Konfiguration von Airflow geben konnten. Du kannst vom Laufen profitieren Apache Airflow parallele Aufgaben reibungslos, nach unseren Ratschlägen. Wir haben gerade bewiesen, dass es möglich ist, in kurzer Zeit ein Airflow-Setup zu erstellen, mit dem Sie sogar 1000 parallele Aufgaben ausführen können! Das ist etwas! Das bedeutet, dass Airflow sowohl für kleine, anspruchslose als auch für viel größere Projekte verwendet werden kann, mit denen Hunderte oder sogar tausend Aufgaben bewältigt werden können. Wie kann Airflow Ihrem Unternehmen helfen? Besuchen Sie unsere Automatisierung der Datenpipeline Seite und finden Sie eine Lösung, die Ihren Bedürfnissen entspricht. Der gesamte Airflow-Startvorgang wird durch unsere Anwendung automatisiert, sodass Sie die gesamte Infrastruktur mit einem Klick einrichten können. Bei der Konstruktion werden moderne Konzepte und Technologien wie CI/CD, Terraform oder Kubernetes verwendet. Für weitere Informationen wenden Sie sich bitte an Umsatz.
Erfahre mehr über Airflow 2.0: