Leistungsoptimierung für Apache Airflow auf Amazon MWAA - Amazon Managed Workflows für Apache Airflow

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Leistungsoptimierung für Apache Airflow auf Amazon MWAA

In diesem Thema wird beschrieben, wie Sie die Leistung einer Amazon Managed Workflows for Apache Airflow-Umgebung mithilfe von Verwenden der Apache Airflow-Konfigurationsoptionen auf Amazon MWAA optimieren können.

Hinzufügen einer Apache Airflow-Konfigurationsoption

Das folgende Verfahren führt Sie durch die Schritte zum Hinzufügen einer Airflow-Konfigurationsoption zu Ihrer Umgebung.

  1. Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-Konsole.

  2. Wählen Sie eine Umgebung aus.

  3. Wählen Sie Edit (Bearbeiten) aus.

  4. Wählen Sie Weiter.

  5. Wählen Sie im Bereich mit den Airflow-Konfigurationsoptionen die Option Benutzerdefinierte Konfiguration hinzufügen aus.

  6. Wählen Sie eine Konfiguration aus der Dropdownliste aus und geben Sie einen Wert ein, oder geben Sie eine benutzerdefinierte Konfiguration ein und geben Sie einen Wert ein.

  7. Wählen Sie für jede Konfiguration, die Sie hinzufügen möchten, die Option Benutzerdefinierte Konfiguration hinzufügen aus.

  8. Wählen Sie Save (Speichern) aus.

Weitere Informationen hierzu finden Sie unter Verwenden der Apache Airflow-Konfigurationsoptionen auf Amazon MWAA.

Apache Airflow Scheduler

Der Apache Airflow Scheduler ist eine Kernkomponente von Apache Airflow. Ein Problem mit dem Scheduler kann DAGs verhindern, dass Aufgaben analysiert und Aufgaben geplant werden. Weitere Informationen zur Optimierung des Apache Airflow-Schedulers finden Sie unter Feinabstimmung der Leistung Ihres Schedulers auf der Apache Airflow-Dokumentationswebsite.

Parameter

In diesem Abschnitt werden die für den Apache Airflow Scheduler verfügbaren Konfigurationsoptionen und ihre Anwendungsfälle beschrieben.

Apache Airflow v2
Version Konfigurationsoption Standard Beschreibung Anwendungsfall

v2

celery.sync_parallelism

1

Die Anzahl der Prozesse, die der Celery Executor verwendet, um den Aufgabenstatus zu synchronisieren.

Sie können diese Option verwenden, um Warteschlangenkonflikte zu vermeiden, indem Sie die vom Celery Executor verwendeten Prozesse einschränken. Standardmäßig ist ein Wert auf festgelegt, 1 um Fehler bei der Übermittlung von Aufgabenprotokollen an Logs zu CloudWatch verhindern. Wenn Sie den Wert auf festlegen, wird die maximale Anzahl von Prozessen verwendet, 0 was jedoch zu Fehlern bei der Übermittlung von Aufgabenprotokollen führen kann.

v2

scheduler.idle_sleep_time

1

Die Anzahl der Sekunden, die zwischen aufeinanderfolgenden Verarbeitungen von DAG-Dateien in der Scheduler-"Schleife“ gewartet werden müssen.

Sie können diese Option verwenden, um CPU-Auslastung auf dem Scheduler zu verringern, indem Sie die Zeit verlängern, in der der Scheduler in den Ruhezustand versetzt wird, nachdem er die Ergebnisse der DAG-Analyse abgerufen, Aufgaben gesucht und in die Warteschlange gestellt hat, sowie Aufgaben in der Warteschlange im Executor ausgeführt hat. Wenn Sie diesen Wert erhöhen, wird die Anzahl der Scheduler-Threads verbraucht, die in einer Umgebung in scheduler.parsing_processes Apache Airflow v2 und Apache Airflow v1 ausgeführt werden. scheduler.max_threads Dies kann die Analysekapazität der Scheduler verringern und die Zeit, die benötigt wird DAGs, bis sie auf dem Webserver erscheinen, verlängern. DAGs

v2

scheduler.max_dagruns_to_create_per_loop

10

Die maximale Anzahl von, für die pro Scheduler- „Schleife“ erstellt werden soll. DAGs DagRuns

Sie können diese Option verwenden, um Ressourcen für die Planung von Aufgaben freizugeben, indem Sie die maximale Anzahl DagRunsfür die Scheduler-"Schleifeverringern.

v2

scheduler.parsing_processes

Wird mit der folgenden Formel festgelegt: standardmäßig. (2 * number of vCPUs) - 1

Die Anzahl der Threads, die der Scheduler parallel zum Zeitplan DAGs ausführen kann.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Prozesse verringern, die der Scheduler parallel zum DAGs Parsen ausführt. Wir empfehlen, diese Zahl niedrig zu halten, wenn sich das DAG-Parsing auf die Aufgabenplanung auswirkt. Sie müssen einen Wert angeben, der unter der Anzahl der vCPUs in Ihrer Umgebung liegt. Weitere Informationen finden Sie unter Grenzwerte.

Einschränkungen

In diesem Abschnitt werden die Grenzwerte beschrieben, die Sie bei der Anpassung der Standardparameter für den Scheduler berücksichtigen sollten.

scheduler.parsing_processes, scheduler.max_threads

Zwei Threads sind pro vCPU für eine Umgebungsklasse zulässig. Mindestens ein Thread muss für den Scheduler einer Umgebungsklasse reserviert sein. Wenn Sie eine Verzögerung bei der Planung von Aufgaben feststellen, müssen Sie möglicherweise Ihre Umgebungsklasse erhöhen. Eine große Umgebung verfügt beispielsweise über eine Fargate-Container-Instance mit 4 vCPUs als Scheduler. Das bedeutet, dass 7 insgesamt ein Maximum an Threads zur Verfügung steht, die für andere Prozesse verwendet werden können. Das heißt, zwei Threads multiplizieren vier VCPUs, minus eins für den Scheduler selbst. Der Wert, den Sie angeben, darf die Anzahl der für eine Umgebungsklasse verfügbaren Threads nicht überschreiten (wie unten gezeigt): scheduler.max_threads scheduler.parsing_processes

  • mw1.small — Der 1 Thread-Wert für andere Prozesse darf nicht überschritten werden. Der verbleibende Thread ist für den Scheduler reserviert.

  • mw1.medium — Die Anzahl der 3 Threads für andere Prozesse darf nicht überschritten werden. Der verbleibende Thread ist für den Scheduler reserviert.

  • mw1.large — Die Anzahl der 7 Threads für andere Prozesse darf nicht überschritten werden. Der verbleibende Thread ist für den Scheduler reserviert.

DAG-Ordner

Der Apache Airflow Scheduler scannt kontinuierlich den DAGs Ordner in Ihrer Umgebung. Alle enthaltenen plugins.zip Dateien oder Python (.py) -Dateien, die „Airflow“ -Importanweisungen enthalten. Alle resultierenden Python-DAG-Objekte werden dann in eine DagBagDatei eingefügt, damit sie vom Scheduler verarbeitet werden kann, um zu bestimmen, welche Aufgaben gegebenenfalls geplant werden müssen. Die Analyse von DAG-Dateien erfolgt unabhängig davon, ob die Dateien brauchbare DAG-Objekte enthalten.

Parameter

In diesem Abschnitt werden die für den DAGs Ordner verfügbaren Konfigurationsoptionen und ihre Anwendungsfälle beschrieben.

Apache Airflow v2
Version Konfigurationsoption Standard Beschreibung Anwendungsfall

v2

scheduler.dag_dir_list_interval

300 Sekunden

Die Anzahl der Sekunden, für die der DAGs Ordner nach neuen Dateien durchsucht werden soll.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Sekunden für die Analyse des DAGs Ordners erhöhen. Wir empfehlen, diesen Wert zu erhöhen, wenn Sie lange Analysezeiten sehentotal_parse_time metrics, was möglicherweise auf eine große Anzahl von Dateien in Ihrem DAGs Ordner zurückzuführen ist.

v2

scheduler.min_file_process_interval

30 Sekunden

Die Anzahl der Sekunden, nach denen der Scheduler eine DAG analysiert und Aktualisierungen der DAG berücksichtigt werden.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Sekunden erhöhen, die der Scheduler wartet, bevor er eine DAG analysiert. Wenn Sie beispielsweise einen Wert von angeben30, wird die DAG-Datei alle 30 Sekunden analysiert. Wir empfehlen, diese Zahl hoch zu halten, um die CPU-Auslastung in Ihrer Umgebung zu verringern.

DAG-Dateien

Als Teil der Apache Airflow-Scheduler-Schleife werden einzelne DAG-Dateien analysiert, um DAG-Python-Objekte zu extrahieren. In Apache Airflow v2 und höher analysiert der Scheduler eine maximale Anzahl von Parsing-Prozessen gleichzeitig. Die in angegebene Anzahl von Sekunden scheduler.min_file_process_interval muss vergehen, bevor dieselbe Datei erneut analysiert wird.

Parameter

In diesem Abschnitt werden die für Apache Airflow DAG-Dateien verfügbaren Konfigurationsoptionen und deren Anwendungsfälle beschrieben.

Apache Airflow v2
Version Konfigurationsoption Standard Beschreibung Anwendungsfall

v2

core.dag_file_processor_timeout

50 Sekunden

Die Anzahl der Sekunden vor dem DagFileProcessorTimeout bei der Verarbeitung einer DAG-Datei.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Zeit bis zum DagFileProcessorTimeout verlängern. Wir empfehlen, diesen Wert zu erhöhen, wenn Sie in Ihren DAG-Verarbeitungsprotokollen Timeouts feststellen, die dazu führen, dass keine brauchbaren Dateien geladen DAGs werden.

v2

core.dagbag_import_timeout

30 Sekunden

Die Anzahl der Sekunden vor dem Import einer Python-Datei wird überschritten.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Zeit erhöhen, die benötigt wird, bis der Scheduler beim Import einer Python-Datei zum Extrahieren der DAG-Objekte ein Timeout durchführt. Diese Option wird als Teil der Scheduler-"Schleife“ verarbeitet und muss einen Wert enthalten, der unter dem in angegebenen Wert liegt. core.dag_file_processor_timeout

v2

core.min_serialized_dag_update_interval

30

Die Mindestanzahl von Sekunden, nach der serialisierte Daten in der Datenbank aktualisiert werden. DAGs

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Sekunden erhöhen, nach denen serialisierte Daten DAGs in der Datenbank aktualisiert werden. Wir empfehlen, diesen Wert zu erhöhen, wenn Sie über eine große Anzahl von oder komplexe DAGs DAGs Daten verfügen. Wenn Sie diesen Wert erhöhen, verringert sich die Belastung des Schedulers und der Datenbank, wenn sie DAGs serialisiert werden.

v2

core.min_serialized_dag_fetch_interval

10

Die Anzahl der Sekunden, für die eine serialisierte DAG erneut aus der Datenbank abgerufen wird, wenn sie bereits in die geladen ist. DagBag

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Sekunden erhöhen, für die eine serialisierte DAG erneut abgerufen wird. Der Wert muss höher als der unter angegebene Wert sein, core.min_serialized_dag_update_interval um die Schreibraten der Datenbank zu reduzieren. Wenn Sie diesen Wert erhöhen, verringert sich die Belastung des Webservers und der Datenbank, sofern sie serialisiert DAGs werden.

Aufgaben

Sowohl der Apache Airflow Scheduler als auch die Worker sind an Aufgaben beteiligt, die in die Warteschlange gestellt und aus der Warteschlange entfernt werden. Der Scheduler versetzt analysierte Aufgaben, die zur Planung bereit sind, vom Status „Keine“ in den Status „Geplant“. Der Executor, der ebenfalls auf dem Scheduler-Container in Fargate läuft, stellt diese Aufgaben in die Warteschlange und setzt ihren Status auf In Warteschlange. Wenn die Mitarbeiter über Kapazitäten verfügen, nimmt er die Aufgabe aus der Warteschlange und setzt den Status auf Wird ausgeführt. Anschließend wird der Status auf Erfolgreich oder Fehlgeschlagen geändert, je nachdem, ob die Aufgabe erfolgreich war oder nicht.

Parameter

In diesem Abschnitt werden die für Apache Airflow-Aufgaben verfügbaren Konfigurationsoptionen und ihre Anwendungsfälle beschrieben.

Die Standardkonfigurationsoptionen, die Amazon MWAA überschreibt, sind markiert. red

Apache Airflow v2
Version Konfigurationsoption Standard Beschreibung Anwendungsfall

v2

core.parallelism

Dynamisch festgelegt basierend auf. (maxWorkers * maxCeleryWorkers) / schedulers * 1.5

Die maximale Anzahl von Task-Instanzen, die den Status „Wird ausgeführt“ haben können.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Task-Instanzen erhöhen, die gleichzeitig ausgeführt werden können. Der angegebene Wert sollte der Anzahl der verfügbaren Worker „mal“ der Worker-Aufgabendichte entsprechen. Wir empfehlen, diesen Wert nur zu ändern, wenn Sie feststellen, dass eine große Anzahl von Aufgaben im Status „Wird ausgeführt“ oder „In Warteschlange“ stecken geblieben ist.

v2

core.dag_concurrency

10000

Die Anzahl der Task-Instanzen, die für jede DAG gleichzeitig ausgeführt werden dürfen.

Sie können diese Option verwenden, um Ressourcen freizugeben, indem Sie die Anzahl der Task-Instanzen erhöhen, die gleichzeitig ausgeführt werden dürfen. Wenn Sie beispielsweise einhundert DAGs mit zehn parallel Aufgaben haben und möchten, dass alle DAGs gleichzeitig ausgeführt werden, können Sie die maximale Parallelität berechnen, indem die Anzahl der verfügbaren Worker „mal“ der Worker-Aufgabendichte geteilt durch die Anzahl von DAGs (z. B. 100) berechnet wird. celery.worker_concurrency

v2

core.execute_tasks_new_python_interpreter

True

Bestimmt, ob Apache Airflow Aufgaben ausführt, indem es den übergeordneten Prozess forkt oder einen neuen Python-Prozess erstellt.

Wenn diese Option auf gesetzt istTrue, erkennt Apache Airflow Änderungen, die Sie an Ihren Plugins vornehmen, als neuen Python-Prozess, der zur Ausführung von Aufgaben erstellt wurde.

v2

celery.worker_concurrency

N/A

Amazon MWAA überschreibt die Airflow-Basisinstallation für diese Option, um Workers als Teil seiner Autoscaling-Komponente zu skalieren.

Any value specified for this option is ignored.

v2

celery.worker_autoscale

mw1.micro - 3,0

mw1.small - 5,0

mw1.mittel - 10,0

mw1.large - 20,0

mw1.xlarge - 40,0

mw1.2xlarge - 80,0

Die Parallelität von Aufgaben für Workers.

Sie können diese Option verwenden, um Ressourcen freizugebenmaximum, indem Sie die Parallelität der minimum Aufgaben von Workers reduzieren. Mitarbeiter akzeptieren bis zu den konfigurierten maximum gleichzeitigen Aufgaben, unabhängig davon, ob genügend Ressourcen dafür zur Verfügung stehen. Wenn Aufgaben ohne ausreichende Ressourcen geplant werden, schlagen die Aufgaben sofort fehl. Es wird empfohlen, diesen Wert für ressourcenintensive Aufgaben zu ändern, indem die Werte so reduziert werden, dass sie unter den Standardwerten liegen, um mehr Kapazität pro Aufgabe zu ermöglichen.