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.
-
Öffnen Sie die Seite Umgebungen auf der Amazon MWAA-Konsole.
-
Wählen Sie eine Umgebung aus.
-
Wählen Sie Edit (Bearbeiten) aus.
-
Wählen Sie Weiter.
-
Wählen Sie im Bereich mit den Airflow-Konfigurationsoptionen die Option Benutzerdefinierte Konfiguration hinzufügen aus.
-
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.
-
Wählen Sie für jede Konfiguration, die Sie hinzufügen möchten, die Option Benutzerdefinierte Konfiguration hinzufügen aus.
-
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-"Schleife“ verringern.
|
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.
|