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.
Fehlerbehebung: DAGs, Operatoren, Verbindungen und andere Probleme in Apache Airflow v1
Die Themen auf dieser Seite enthalten Lösungen für Apache Airflow v1.10.12 Python-Abhängigkeiten, benutzerdefinierte Plugins, DAGs, Operatoren, Verbindungen, Aufgaben und Webserverprobleme, die in einer Amazon Managed Workflows for Apache Airflow-Umgebung auftreten können.
Inhalt
- requirements.txt wird aktualisiert
- Defekte DAG
- Ich habe bei der Verwendung von Amazon DynamoDB DynamoDB-Operatoren die Fehlermeldung „Broken DAG“ erhalten
- Ich habe den Fehler „Broken DAG: Kein Modul namens psycopg2“ erhalten
- Ich habe bei der Verwendung der Slack-Operatoren die Fehlermeldung „Broken DAG“ erhalten
- Ich habe verschiedene Fehler bei der Installation von Google/GCP/ erhaltenBigQuery
- Ich habe den Fehler „Broken DAG: Kein Modul namens Cython“ erhalten
- Operatoren
- Verbindungen
- Webserver
- Aufgaben
- CLI
requirements.txt wird aktualisiert
Im folgenden Thema werden die Fehler beschrieben, die bei der Aktualisierung Ihres auftreten könnenrequirements.txt
.
Das Hinzufügenapache-airflow-providers-amazon
führt dazu, dass meine Umgebung ausfällt
apache-airflow-providers-
ist nur mit Apache Airflow v2 kompatibel. xyz
apache-airflow-backport-providers-
ist kompatibel mit Apache Airflow 1.10.12.xyz
Defekte DAG
Im folgenden Thema werden die Fehler beschrieben, die beim Ausführen von DAGs auftreten können.
Ich habe bei der Verwendung von Amazon DynamoDB DynamoDB-Operatoren die Fehlermeldung „Broken DAG“ erhalten
Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Fügen Sie das folgende Paket zu Ihrem hinzu
requirements.txt
.boto
-
Weitere Möglichkeiten zum Angeben von Python-Abhängigkeiten in einer
requirements.txt
Datei finden Sie unterVerwaltung von Python-Abhängigkeiten in requirements.txt.
Ich habe den Fehler „Broken DAG: Kein Modul namens psycopg2“ erhalten
Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Fügen Sie Folgendes zu Ihrer
requirements.txt
Apache Airflow-Version hinzu. Beispiel:apache-airflow[postgres]==1.10.12
-
Weitere Möglichkeiten zum Angeben von Python-Abhängigkeiten in einer
requirements.txt
Datei finden Sie unterVerwaltung von Python-Abhängigkeiten in requirements.txt.
Ich habe bei der Verwendung der Slack-Operatoren die Fehlermeldung „Broken DAG“ erhalten
Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Fügen Sie das folgende Paket zu Ihrer Apache Airflow-Version hinzu
requirements.txt
und geben Sie Ihre Apache Airflow-Version an. Beispiel:apache-airflow[slack]==1.10.12
-
Weitere Möglichkeiten zum Angeben von Python-Abhängigkeiten in einer
requirements.txt
Datei finden Sie unterVerwaltung von Python-Abhängigkeiten in requirements.txt.
Ich habe verschiedene Fehler bei der Installation von Google/GCP/ erhaltenBigQuery
Amazon MWAA verwendet Amazon Linux, für das eine bestimmte Version der Cython- und Kryptografiebibliotheken erforderlich ist. Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Fügen Sie das folgende Paket zu Ihrem hinzu
requirements.txt
.grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow-backport-providers-amazon[google]
-
Wenn Sie keine Backport-Anbieter verwenden, können Sie Folgendes verwenden:
grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow[gcp]==1.10.12
-
Weitere Möglichkeiten zum Angeben von Python-Abhängigkeiten in einer
requirements.txt
Datei finden Sie unterVerwaltung von Python-Abhängigkeiten in requirements.txt.
Ich habe den Fehler „Broken DAG: Kein Modul namens Cython“ erhalten
Amazon MWAA verwendet Amazon Linux, für das eine bestimmte Version von Cython erforderlich ist. Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Fügen Sie das folgende Paket zu Ihrem hinzu
requirements.txt
.cython==0.29.21
-
Cython-Bibliotheken haben verschiedene erforderliche Pip-Abhängigkeitsversionen. Verwenden Sie beispielsweise
awswrangler==2.4.0
requirespyarrow<3.1.0,>=2.0.0
, sodass pip3 versucht, es zu installieren,pyarrow==3.0.0
was zu einem defekten DAG-Fehler führt. Wir empfehlen, die älteste akzeptable Version explizit anzugeben. Wenn Sie beispielsweise den Mindestwertpyarrow==2.0.0
vorher angeben,awswrangler==2.4.0
verschwindet der Fehler und dierequirements.txt
Installation wird korrekt durchgeführt. Die endgültigen Anforderungen sollten wie folgt aussehen:cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
-
Weitere Möglichkeiten zum Angeben von Python-Abhängigkeiten in einer
requirements.txt
Datei finden Sie unterVerwaltung von Python-Abhängigkeiten in requirements.txt.
Operatoren
Im folgenden Thema werden die Fehler beschrieben, die bei der Verwendung von Operatoren auftreten können.
Ich habe einen Fehler bei der Verwendung desBigQuery Operators erhalten
Amazon MWAA unterstützt keine Operatoren mit Benutzeroberflächenerweiterungen. Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Eine Problemumgehung besteht darin, die Erweiterung zu überschreiben, indem Sie der DAG eine Zeile hinzufügen, die
<operator name>.operator_extra_links = None
nach dem Import der problematischen Operatoren festgelegt werden soll. Beispiel:from airflow.contrib.operators.bigquery_operator import BigQueryOperator BigQueryOperator.operator_extra_links = None
-
Sie können diesen Ansatz für alle DAGs verwenden, indem Sie den oben genannten Ansatz zu einem Plugin hinzufügen. Ein Beispiel finden Sie unter Ein benutzerdefiniertes Plugin für Apache Airflow erstellen PythonVirtualenvOperator.
Verbindungen
Das folgende Thema beschreibt die Fehler, die auftreten können, wenn Sie eine Apache Airflow-Verbindung oder eine andereAWS Datenbank verwenden.
Ich kann keine Verbindung zu Snowflake herstellen
Wir empfehlen die folgende Schritte:
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub. -
Fügen Sie der Datei requirements.txt für Ihre Umgebung die folgenden Einträge hinzu.
asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
-
Fügen Sie Ihrer DAG die folgenden Importe hinzu:
from airflow.contrib.hooks.snowflake_hook import SnowflakeHook from airflow.contrib.operators.snowflake_operator import SnowflakeOperator
Stellen Sie sicher, dass das Apache Airflow-Verbindungsobjekt die folgenden Schlüssel-Wert-Paare enthält:
-
Conn-ID: snowflake_conn
-
Verbindungstyp: Schneeflocke
-
Gastgeber:<my account>. <my region if not us-west-2>.snowflakecomputing.com
-
Schema: <my schema>
-
Einloggen: <my user name>
-
Passwort: ********
-
Hafen: <port, if any>
-
Zusätzlich:
{ "account": "<my account>", "warehouse": "<my warehouse>", "database": "<my database>", "region": "<my region if not using us-west-2 otherwise omit this line>" }
Beispiel:
>>> import json >>> from airflow.models.connection import Connection >>> myconn = Connection( ... conn_id='snowflake_conn', ... conn_type='Snowflake', ... host='
YOUR_ACCOUNT
.YOUR_REGION
.snowflakecomputing.com', ... schema='YOUR_SCHEMA
' ... login='YOUR_USERNAME
', ... password='YOUR_PASSWORD
', ... port='YOUR_PORT
' ... extra=json.dumps(dict(account='YOUR_ACCOUNT
', warehouse='YOUR_WAREHOUSE
', database='YOUR_DB_OPTION
', region='YOUR_REGION
')), ... )
Ich kann keine Verbindung zu Secrets Manager herstellen
Wir empfehlen die folgende Schritte:
-
Erfahren Sie, wie Sie geheime Schlüssel für Ihre Apache Airflow-Verbindung und Variablen in erstellenKonfiguration einer Apache Airflow-Verbindung mithilfe eines Geheimnisses AWS Secrets Manager.
-
Erfahren Sie, wie Sie den geheimen Schlüssel für eine Apache Airflow-Variable (
test-variable
) in verwendenVerwendung eines geheimen Schlüssels AWS Secrets Manager für eine Apache Airflow-Variable. -
Erfahren Sie, wie Sie den geheimen Schlüssel für eine Apache Airflow-Verbindung (
myconn
) in verwendenVerwendung eines geheimen Schlüssels AWS Secrets Manager für eine Apache Airflow-Verbindung.
Ich kann auf '<DB-identifier-name>.cluster-id keine Verbindung zu meinem MySQL-Server herstellen. <region>.rds.amazonaws.com'
Die Sicherheitsgruppe von Amazon MWAA und die RDS-Sicherheitsgruppe benötigen eine Eingangsregel, um Datenverkehr zu und von einander zuzulassen. Wir empfehlen die folgende Schritte:
-
Ändern Sie die RDS-Sicherheitsgruppe, um den gesamten Datenverkehr von der VPC-Sicherheitsgruppe von Amazon MWAA zuzulassen.
-
Ändern Sie die VPC-Sicherheitsgruppe von Amazon MWAA, um den gesamten Datenverkehr von der RDS-Sicherheitsgruppe zuzulassen.
-
Führen Sie Ihre Aufgaben erneut aus und überprüfen Sie, ob die SQL-Abfrage erfolgreich war, indem Sie die ApacheCloudWatch Airflow-Protokolle in den Protokollen überprüfen.
Webserver
Das folgende Thema beschreibt die Fehler, die Sie für Ihren Apache Airflow-Webserver auf Amazon MWAA erhalten können.
Ich benutze dasBigQueryOperator und es führt zum Absturz meines Webservers
Wir empfehlen die folgende Schritte:
-
Apache Airflow-Operatoren wie die
BigQueryOperator
undQuboleOperator
die enthaltenoperator_extra_links
können zum Absturz Ihres Apache Airflow-Webservers führen. Diese Operatoren versuchen, Code auf Ihren Webserver zu laden, was aus Sicherheitsgründen nicht zulässig ist. Wir empfehlen, die Operatoren in Ihrer DAG zu patchen, indem Sie nach Ihren Importanweisungen den folgenden Code hinzufügen:BigQueryOperator.operator_extra_links = None
-
Testen Sie Ihre DAGs, benutzerdefinierten Plugins und Python-Abhängigkeiten lokal mit dem aws-mwaa-local-runner
onGitHub.
Ich sehe einen 5xx-Fehler beim Zugriff auf den Webserver
Wir empfehlen die folgende Schritte:
-
Überprüfen Sie die Konfigurationsoptionen von Apache Airflow. Stellen Sie sicher, dass die Schlüssel-Wert-Paare, die Sie als Apache Airflow-Konfigurationsoption angegeben haben, wie z. B.AWS Secrets Manager, korrekt konfiguriert wurden. Weitere Informationen hierzu finden Sie unter Ich kann keine Verbindung zu Secrets Manager herstellen.
-
Überprüfe die
requirements.txt
. Stellen Sie sicher, dass das Airflow-Paket „Extras“ und andere in Ihrem Paket aufgelistete Bibliotheken mit Ihrer Apache Airflow-Version kompatibelrequirements.txt
sind. -
Weitere Möglichkeiten zum Angeben von Python-Abhängigkeiten in einer
requirements.txt
Datei finden Sie unterVerwaltung von Python-Abhängigkeiten in requirements.txt.
Ich sehe den Fehler „Der Scheduler scheint nicht zu laufen“
Wenn der Scheduler nicht zu laufen scheint oder der letzte „Herzschlag“ vor mehreren Stunden empfangen wurde, werden Ihre DAGs möglicherweise nicht in Apache Airflow angezeigt und neue Aufgaben werden nicht geplant.
Wir empfehlen die folgende Schritte:
-
Vergewissern Sie sich, dass Ihre VPC-Sicherheitsgruppe eingehenden Zugriff auf den Port zulässt
5432
. Dieser Port wird benötigt, um eine Verbindung zur Amazon Aurora PostgreSQL-Metadatendatenbank für Ihre Umgebung herzustellen. Nachdem diese Regel hinzugefügt wurde, geben Sie Amazon MWAA ein paar Minuten, und der Fehler sollte verschwinden. Weitere Informationen hierzu finden Sie unter Sicherheit in Ihrem VPC bei Amazon MWAA.Anmerkung
-
Die Aurora PostgreSQL-Metadatenbank ist Teil der Amazon MWAA-Servicearchitektur und in Ihrer nicht sichtbarAWS-Konto.
-
Datenbankfehler sind in der Regel ein Symptom für einen Schedulerausfall und nicht die Hauptursache.
-
-
Wenn der Scheduler nicht läuft, kann dies an einer Reihe von Faktoren liegen, z. B. an Fehlern bei der Installation von Abhängigkeiten oder einem überlasteten Scheduler. Vergewissern Sie sich, dass Ihre DAGs, Plugins und Anforderungen ordnungsgemäß funktionieren, indem Sie sich die entsprechenden Protokollgruppen unterCloudWatch Logs ansehen. Weitere Informationen hierzu finden Sie unter Überwachung und Metriken für Amazon Managed Workflows for Apache Airflow.
Aufgaben
Das folgende Thema beschreibt die Fehler, die Sie bei Apache Airflow-Aufgaben in einer Umgebung erhalten können.
Ich sehe, dass meine Aufgaben hängen bleiben oder nicht abgeschlossen werden
Wenn Ihre Apache Airflow-Aufgaben „hängen“ oder nicht abgeschlossen werden, empfehlen wir die folgenden Schritte:
-
Es kann eine große Anzahl von DAGs definiert sein. Reduzieren Sie die Anzahl der DAGs und führen Sie ein Update der Umgebung durch (z. B. das Ändern eines Log-Levels), um einen Reset zu erzwingen.
-
Airflow analysiert DAGs, unabhängig davon, ob sie aktiviert sind oder nicht. Wenn Sie mehr als 50% der Kapazität Ihrer Umgebung nutzen, können Sie den Apache Airflow Scheduler überfordern. Dies führt zu einer hohen Gesamtanalysezeit inCloudWatch Metriken oder zu langen DAG-Verarbeitungszeiten inCloudWatch Protokollen. Es gibt jedoch nicht behandelt. Sie werden in dieser Anleitung jedoch nicht behandelt.
-
Weitere Informationen zu den bewährten Methoden, die wir empfehlen, um die Leistung Ihrer Umgebung zu optimieren, finden Sie unterLeistungsoptimierung für Apache Airflow bei Amazon MWAA.
-
-
Möglicherweise befindet sich eine große Anzahl von Aufgaben in der Warteschlange. Dies wird häufig als eine große — und wachsende — Anzahl von Aufgaben im Status „Keine“ oder als große Anzahl unter Aufgaben in der Warteschlange und/oder Aufgaben, die noch ausstehen, angezeigtCloudWatch. Dies kann aus folgenden Gründen geschehen:
-
Wenn mehr Aufgaben ausgeführt werden müssen, als die Umgebung ausführen kann, und/oder wenn eine große Anzahl von Aufgaben, die vor der automatischen Skalierung in die Warteschlange gestellt wurden, Zeit hat, die Aufgaben zu erkennen und zusätzliche Worker bereitzustellen.
-
Wenn mehr Aufgaben ausgeführt werden müssen, als eine Umgebung ausführen kann, empfehlen wir, die Anzahl der Aufgaben, die Ihre DAGs gleichzeitig ausführen, zu reduzieren und/oder die Mindestanzahl der Apache Airflow Worker zu erhöhen.
-
Wenn es eine große Anzahl von Aufgaben gibt, die in der Warteschlange standen, bevor Autoscaling Zeit hatte, zusätzliche Worker zu erkennen und bereitzustellen, empfehlen wir, die Taskbereitstellung zu staffeln und/oder die Mindestanzahl der Apache Airflow Worker zu erhöhen.
-
Sie können den Befehl update-environment in derAWS Command Line Interface (AWS CLI) verwenden, um die minimale oder maximale Anzahl von Workern zu ändern, die in Ihrer Umgebung ausgeführt werden.
aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
-
Weitere Informationen zu den bewährten Methoden, die wir empfehlen, um die Leistung Ihrer Umgebung zu optimieren, finden Sie unterLeistungsoptimierung für Apache Airflow bei Amazon MWAA.
-
-
Möglicherweise werden während der Ausführung Aufgaben gelöscht, die als Aufgabenprotokolle angezeigt werden, die ohne weitere Angabe in Apache Airflow beendet werden. Dies kann aus folgenden Gründen geschehen:
-
Wenn es einen kurzen Moment gibt, in dem 1) die aktuellen Aufgaben die aktuelle Umgebungskapazität überschreiten, gefolgt von 2) einigen Minuten, in denen keine Aufgaben ausgeführt werden oder in die Warteschlange gestellt werden, dann 3) neue Aufgaben in die Warteschlange gestellt werden.
-
Amazon MWAA Autoscaling reagiert auf das erste Szenario, indem zusätzliche Mitarbeiter hinzugefügt werden. Im zweiten Szenario werden die zusätzlichen Arbeiter entfernt. Einige der Aufgaben, die sich in der Warteschlange befinden, können dazu führen, dass die Worker gerade entfernt werden und enden, wenn der Container gelöscht wird.
-
Wir empfehlen, die Mindestanzahl an Mitarbeitern in Ihrer Umgebung zu erhöhen. Eine weitere Möglichkeit besteht darin, das Timing Ihrer DAGs und Aufgaben anzupassen, um sicherzustellen, dass diese Szenarien nicht eintreten.
-
Sie können auch festlegen, dass die Mindestanzahl an Mitarbeitern der maximalen Anzahl an Mitarbeitern in Ihrer Umgebung entspricht, wodurch die automatische Skalierung effektiv deaktiviert wird. Verwenden Sie den Befehl update-environment in derAWS Command Line Interface (AWS CLI), um die automatische Skalierung zu deaktivieren, indem Sie die Mindest- und Höchstanzahl von Workern auf die gleiche setzen.
aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --max-workers 5
-
Weitere Informationen zu den bewährten Methoden, die wir empfehlen, um die Leistung Ihrer Umgebung zu optimieren, finden Sie unterLeistungsoptimierung für Apache Airflow bei Amazon MWAA.
-
-
Wenn Ihre Aufgaben im Status „Wird ausgeführt“ stecken, können Sie die Aufgaben auch löschen oder sie als erfolgreich oder fehlgeschlagen markieren. Dadurch kann die Autoscaling-Komponente für Ihre Umgebung die Anzahl der Worker, die in Ihrer Umgebung ausgeführt werden, reduzieren. Die folgende Abbildung zeigt ein Beispiel für eine nicht behandelt.
-
Wählen Sie den Kreis für die gestrandete Aufgabe und klicken Sie dann auf Löschen (wie abgebildet). Dadurch kann Amazon MWAA Mitarbeiter verkleinern. Andernfalls kann Amazon MWAA nicht feststellen, welche DAGs aktiviert oder deaktiviert sind, und kann nicht herunterskalieren, wenn es noch Aufgaben in der Warteschlange gibt.
-
-
Weitere Informationen zum Apache Airflow-Aufgabenlebenszyklus finden Sie unter Konzepte
im Apache Airflow-Referenzleitfaden.
CLI
Im folgenden Thema werden die Fehler beschrieben, die beim Ausführen von Airflow-CLI-Befehlen in der auftreten könnenAWS Command Line Interface.
Ich sehe einen '503'-Fehler, wenn ich eine DAG in der CLI auslöse
Die Airflow-CLI wird auf dem Apache Airflow-Webserver ausgeführt, der über eine eingeschränkte Parallelität verfügt. In der Regel können maximal 4 CLI-Befehle gleichzeitig ausgeführt werden.