Kommentar von Constantin Gonzalez und Ovidiu Hutuleac, AWS Einfaches Orchestrieren von Daten-Pipelines mit Apache Airflow auf AWS

Autor / Redakteur: Constantin Gonzalez und Ovidiu Hutuleac * / Nico Litzel

Firmen zum Thema

AWS hat einen neuen vollständig verwalteten Service für Apache Airflow veröffentlicht. Damit lassen sich derselbe Open-Source-Airflow-Service und dieselbe Python-Sprache zum Erstellen von Workflows verwenden, ohne die zugrundeliegende Infrastruktur für Skalierbarkeit, Verfügbarkeit und Sicherheit selbst verwalten zu müssen.
AWS hat einen neuen vollständig verwalteten Service für Apache Airflow veröffentlicht. Damit lassen sich derselbe Open-Source-Airflow-Service und dieselbe Python-Sprache zum Erstellen von Workflows verwenden, ohne die zugrundeliegende Infrastruktur für Skalierbarkeit, Verfügbarkeit und Sicherheit selbst verwalten zu müssen.
(Bild: © alexskopje - stock.adobe.com)

Eine Big-Data-Plattform ist eine Architektur für Business-Analysen, die alle Komponenten zur Unterstützung von Data Warehousing, Dateneingabe und -verarbeitung in Echtzeit, maschinellem Lernen (ML) und Entwicklung von Künstlicher Intelligenz (KI) umfasst. Moderne Big-Data-Plattformen bieten einen offenen Datenzugang aus verschiedenen Quellen wie Relationalen Datenbank-Systemen (RDBMS), Internet of Things (IoT) oder Social Media Streams. Die Daten werden per Streaming oder über einen Workflow als Batch-Prozess in das System kopiert.

Bei der Nutzung solcher Plattformen besteht eine Herausforderung darin, dass ihre Workflows mit zunehmender Größe komplexer werden und schwieriger zu pflegen sind. Das führt oft zur Bildung von Silos und unterschiedlicher Standards für die Dateneingabe sowie -verarbeitung. Daten-Workflows müssen bereitgestellt, überwacht, geplant und über verschiedene Ereignisse (Events) ausgelöst werden. Durch das Fehlen standardisierter Tools zum Orchestrieren von ETL-Workflows (Extrahieren, Transformieren, Laden) können komplexe, Crontab-basierte und langwierige Batch-Vorgänge entstehen. Außerdem erschweren häufig benutzerdefinierte APIs die Integration bestehender Dienste. Dadurch entfernen sich die Teams von ihrem eigentlichen Hauptziel und dem vielleicht wichtigsten Bestandteil von Analyse- und ML-Workflows: dem Erfassen und Aufbereiten von Daten.

Analysen und ML-Modelle sind allerdings nur so gut wie die Daten, die ihnen zugrunde liegen. Daher bildet sich gerade eine neue Generation von Werkzeugen für die Orchestrierung komplexer Arbeitsabläufe heraus. Sie sollen Workflows vereinfachen, indem sie diese als Code definieren. Dadurch lassen sich die Workflows auch auf Unternehmensebene besser warten, versionieren sowie testen – und werden dadurch kollaborativer.

Apache Airflow

Apache Airflow wurde von Airbnb im Oktober 2014 entwickelt und ist ein Workflow-Management-System auf Open-Source-Basis. Es dient dem programmatischen Erstellen, Planen und Überwachen von Big-Data-Abläufen. Die Workflow-Ausführung basiert auf dem Konzept eines gerichteten azyklischen Graphen – auch Directed Acyclic Graph (DAG) genannt. Gemäß Definition hat ein DAG keine Zyklen und die Daten können in jedem Knoten nur in eine Richtung fließen. Für Big Data Workflows sind DAGs daher eine gute Lösung.

Grundlegende Konzepte

Bei der Gestaltung komplexer Arbeitsabläufe auf Big-Data-Plattformen wird häufig davon ausgegangen, dass Daten von einer Richtung in eine andere fließen und dabei ihre Form verändern. Aus diesem Grund sind Graphen äußerst nützlich, um komplexe Datenflüsse darzustellen. Es lassen sich unzählige Graphen definieren, die separat geplant und überwacht werden. In einem Airflow-DAG ist jeder Knoten ein Task, der eine bestimmte Funktion hat. Die Kanten des Knotens stellen die Abhängigkeiten zwischen den Tasks dar.

Ein Apache-Airflow-DAG wird durch ein Python-Skript definiert und ist eine Sammlung aller auszuführenden Tasks. Sie sind so organisiert, dass sie alle Beziehungen und Abhängigkeiten widerspiegeln. DAGs selbst führen keine eigentlichen Berechnungen durch, stattdessen bestimmen Operatoren die jeweiligen Aufgaben. Ein Operator beschreibt die einzelnen Tasks in einem Template. Apache Airflow bietet Operatoren für gängige Aufgaben an – auch benutzerdefiniert. Nachdem ein Operator instanziiert wurde, wird er als Task bezeichnet. Voraussetzung ist die Angabe einer eindeutigen task_id und eines DAG-Containers, in dem die Tasks organisiert und für die Ausführung konfiguriert werden. In der Regel werden Operatoren in drei Kategorien eingeteilt: Sensoren, Operatoren und Transfers.

Um mit Operatoren arbeiten zu können, bietet Airflow vorgefertigte Templates für viele gängige Tasks. Sie lösen bestimmte Aktionen aus – zum Beispiel einen Bash-Befehl, eine Python-Funktion oder eine Hive-Abfrage. Es gibt immer mehr Operatoren, die von der Community erstellt und gepflegt werden – etwa für Amazon Simple Storage Service (Amazon S3), Amazon Elastic MapReduce (Amazon EMR) oder Amazon SageMaker. Weitere Informationen hierzu lassen sich bei den Airflow-Operatoren auf Github finden. Die Operatoren sind von der BaseOperator-Klasse abgeleitet und erhalten ihre Funktionalität durch Vererbung. Entwickler können die BaseOperator-Klasse erweitern, um benutzerdefinierte Operatoren nach Bedarf zu erstellen.

Neben Operatoren gibt es auch Sensoren, die beobachten, wann ein bestimmtes Ereignis eintritt und so lange laufen, bis bestimmte Kriterien erfüllt sind – etwa eine festgelegte Wartezeit, der Eingang einer externen Datei oder von Upstream-Daten (Hive-Dateien, S3-Bucket). Transfers fallen in die gleiche Kategorie. Mit ihrer Hilfe lassen sich Daten von einem Ort zum anderen verschieben – zum Beispiel von MySQL zu Hive oder von S3 zu Redshift.

Weitere Einzelheiten zu Apache Airflow finden Sie unter Konzepte in der Apache-Airflow-Dokumentation.

Scheduling

Der Scheduler überwacht die DAGs und führt diejenigen Tasks aus, deren Abhängigkeiten erfüllt sind. Dabei kontrolliert er die DAG-Definition, prüft die Tasks in jedem DAG und startet sie, sobald sie bereit sind. Zu diesem Zweck wird ein Unterprozess gestartet, der in regelmäßigen Abständen die Metadaten-Datenbank ausliest (etwa jede Minute), um den Status der einzelnen Tasks zu überprüfen und über das weitere Vorgehen zu entscheiden. In der Metadaten-Datenbank wird der Status aller Tasks gespeichert: running, success, failed usw. Ein Task gilt als bereit zur Ausführung, sobald seine Abhängigkeiten erfüllt sind. Dazu gehören alle Daten, die für die Ausführung des Tasks erforderlich sind. DAGs und Tasks werden entweder nach Bedarf ausgeführt oder zu einem bestimmten Zeitpunkt, der als Cron-Ausdruck im DAG definiert ist: beispielsweise @hourly oder 0 0 0 15 * (einmal am 15. Tag jedes Monats).

Die Ausführung dieser Tasks ist vom Scheduler entkoppelt und bietet die Möglichkeit, je nach Bedarf aus verschiedenen Ausführungsimplementierungen (Executors) zu wählen. Der Standard-Executor ist der SequentialExecutor. Er führt einen Task nach dem anderen aus. Bei mehreren Teams mit parallel ausgeführten komplexen Workflows ist es besser, sich für einen passenderen Executor zu entscheiden. So verwendet der CeleryExecutor einen Warteschlangenmechanismus, um parallele Tasks auszuführen und zu koordinieren. Der KubernetesExecutor hingegen kann einen neuen Pod in einem Kubernetes-Cluster für jede laufende Task-Instanz erstellen.

Betrieb von Apache Airflow in der Produktion

Viele Unternehmen wollen große Datenmengen für Analysen und Erkenntnisse nutzen und dabei Werkzeuge wie Apache Airflow verwenden. Allerdings müssen die Dateningenieure dazu Airflow selbst installieren, warten, überwachen, skalieren und sichern. Das erhöht die Kosten und die betriebliche Komplexität. Stattdessen besteht das eigentliche Ziel darin, sich auf die Gewinnung von Erkenntnissen aus Daten zu konzentrieren. Um Experten dabei zu entlasten bietet AWS einen Management-Dienst für Apache Airflow an.

Amazon Managed Workflows for Apache Airflow (MWAA)

AWS veröffentlichte im Dezember 2020 einen neuen vollständig verwalteten Service für Apache Airflow. Damit lassen sich derselbe Open-Source-Airflow-Service und dieselbe Python-Sprache zum Erstellen von Workflows verwenden, ohne die zugrundeliegende Infrastruktur für Skalierbarkeit, Verfügbarkeit und Sicherheit selbst verwalten zu müssen. Managed Workflows for Apache Airflow (MWAA) skaliert seine Workflow-Ausführungskapazität automatisch, um den Kundenanforderungen gerecht zu werden. Es ist mit den AWS-Sicherheitsservices integriert und ermöglicht einen schnellen und sicheren Zugriff auf Daten.

Mithilfe von Amazon-Athena-Abfragen kann MWAA aus Quellen wie Amazon S3 Daten abrufen. Mit Amazon EMR-Clustern kann MWAA auch Transformationen durchführen und resultierende Daten zum Trainieren von ML-Modellen auf Amazon SageMaker verwenden.

Mit MWAA lässt sich der Airflow CeleryExecutor mit einem automatisch skalierenden Mechanismus verwenden. AWS nutzt den Simple Queue Service (SQS) als Nachrichtenwarteschlange, um die geplanten Celery-Tasks zu verarbeiten. Airflow stützt sich auf eine Metadaten-Datenbank, die Informationen über Ihre Arbeitsabläufe speichert. AWS verwendet zu diesem Zweck Amazon Aurora PostgreSQL.

Mit Managed Workflows ist die Datensicherheit der Daten gewährleistet, da die Arbeitslasten unter Verwendung der Amazon Virtual Private Cloud (VPC) ausgeführt werden.
Mit Managed Workflows ist die Datensicherheit der Daten gewährleistet, da die Arbeitslasten unter Verwendung der Amazon Virtual Private Cloud (VPC) ausgeführt werden.
(Bild: AWS)

Mit Managed Workflows ist die Sicherheit der Daten gewährleistet, da die Arbeitslasten in der isolierten und sicheren Cloud-Umgebung des Unternehmens unter Verwendung der Amazon Virtual Private Cloud (VPC) ausgeführt werden. Die Daten werden automatisch mit dem AWS Key Management Service (KMS) verschlüsselt, sodass sich die Benutzer nicht mehr um die Sicherheit ihrer Workflow-Umgebung kümmern müssen.

Amazon MWAA ist ein Managed Service, der das „Heavy Lifting“ vermeidet, das mit dem Betrieb von Open Source Apache Airflow in großem Umfang verbunden ist. Standardmäßig bietet er automatische kleinere Versions-Upgrades und Patches – mit der Option, ein Wartungsfenster von zwei Stunden festzulegen, in dem diese Upgrades durchgeführt werden. Das Wartungsfenster ermöglicht es, den Zeitpunkt für Software-Patches zu wählen. Wenn eine Wartung für eine konkrete Woche geplant ist, wird sie zu einem bestimmten Moment innerhalb des festgelegten Wartungsfensters eingeleitet und abgeschlossen.

Amazon MWAA nutzt Amazon S3 als Speicher für die DAG-Dateien, den Plugin-Code und die requirements.txt-Datei.
Amazon MWAA nutzt Amazon S3 als Speicher für die DAG-Dateien, den Plugin-Code und die requirements.txt-Datei.
(Bild: AWS)

Amazon MWAA nutzt Amazon S3 als Speicher für die DAG-Dateien, den Plugin-Code und die requirements.txt-Datei, die zusätzliche Python-Pakete für die Installation innerhalb der Airflow-Umgebung enthält. Hier lassen sich Community-Plug-ins oder benutzerdefinierte Plug-ins ebenfalls hinzufügen.

Darüber hinaus können Sie Ihre Workflows mit einer Vielzahl von lokalen oder AWS-Services verbinden, wie z. B.: Amazon Athena, AWS Batch, Amazon Cloudwatch, Amazon DynamoDB, AWS DataSync, Amazon EMR, Amazon Elastic Container Service, Amazon Elastic Kubernetes Service, AWS Fargate, Amazon Kinesis Firehose, AWS Glue, AWS Lambda, Amazon Redshift, Amazon SQS, Amazon SNS, Amazon Sagemaker oder Amazon S3.

Nächste Schritte

In diesem Artikel wurde beschrieben, mit welchen Herausforderungen Anwender heutzutage bei der Entwicklung von Workflows für Big Data-Plattformen konfrontiert sind und wie sich diese Probleme mithilfe von Services wie Amazon Managed Workflows for Apache Airflow Schritt für Schritt lösen lassen.

Sie können ganz einfach mit Amazon MWAA beginnen: Nutzen Sie dazu das offizielle Schnellstart-Tutorial. Sie können auch Komponenten auf Apache Airflow Github verwenden oder einige der DAG-Samples in Codebeispiele für Amazon Managed Workflows für Apache Airflow (MWAA) ausführen.

* Constantin Gonzalez ist Principal Solutions Architect bei Amazon Web Services (AWS) und Ovidiu Hutuleac ist Solutions Architect bei AWS.

(ID:47638888)