Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
In Managed Airflow werden bestimmte Ordner im Bucket Ihrer Umgebung mit Airflow-Komponenten synchronisiert, die in Ihrer Umgebung ausgeführt werden. Weitere Informationen finden Sie unter In Cloud Storage gespeicherte Daten. Auf dieser Seite werden Probleme beschrieben, die den Synchronisierungsprozess stören können, und wie Sie diese beheben.
Allgemeine Probleme
In den folgenden Abschnitten werden Symptome und mögliche Lösungen für einige häufig auftretende Probleme bei der Dateisynchronisierung beschrieben.
Umgang mit einer großen Anzahl von DAGs und Plug-ins in den Ordnern „dags“ und „plugins“
Die Inhalte der Ordner /dags und /plugins werden aus dem Bucket Ihrer Umgebung mit den lokalen Dateisystemen der Airflow-Worker und -Planer synchronisiert.
Je mehr Daten in diesen Ordnern gespeichert sind, desto länger dauert die Synchronisierung. So können Sie diese Situationen vermeiden:
Beschränken Sie die Anzahl der Dateien in den Ordnern
/dagsund/plugins. Speichern Sie nur die erforderlichen Dateien.Erhöhen Sie den für Airflow-Planer und -Worker verfügbaren Speicherplatz.
Erhöhen Sie die CPU- und Arbeitsspeicherkapazität der Airflow-Planer und -Worker, damit die Synchronisierung schneller ausgeführt wird.
Bei einer sehr großen Anzahl von DAGs können Sie die DAGs in Batches aufteilen, sie in ZIP-Archive komprimieren und diese Archive im Ordner
/dagsbereitstellen. Dieser Ansatz beschleunigt die Synchronisierung von DAGs. Airflow-Komponenten extrahieren ZIP-Archive, bevor sie DAGs verarbeiten.Sie können DAGs auch programmatisch generieren, um die Anzahl der im Ordner
/dagsgespeicherten DAG-Dateien zu begrenzen. Im Abschnitt Programmatische DAGs auf der Seite zur Fehlerbehebung bei DAGs finden Sie Informationen dazu, wie Sie Probleme beim Planen und Ausführen von programmatisch generierten DAGs vermeiden.
Anti-Patterns, die sich auf die Synchronisierung von DAGs und Plug-ins mit Planern, Workern und Webservern auswirken
In Managed Airflow werden die Inhalte der Ordner /dags und /plugins mit Planern und Workern synchronisiert. Bestimmte Objekte in den Ordnern /dags und /plugins können verhindern, dass diese Synchronisierung ordnungsgemäß funktioniert, oder sie verlangsamen.
Der Ordner
/dagswird mit Planern und Workern synchronisiert.Dieser Ordner wird nicht mit dem Webserver synchronisiert.
Der Ordner
/pluginswird mit Planern, Workern und Webservern synchronisiert.
Möglicherweise treten die folgenden Probleme auf:
Sie haben mit GZIP komprimierte Dateien, die die Komprimierungstranscodierung verwenden, in die Ordner
/dagsund/pluginshochgeladen. Das passiert in der Regel, wenn Sie das Flag--gzip-local-allin einemgcloud storage cp-Befehl verwenden, um Daten in den Bucket hochzuladen.Lösung: Löschen Sie das Objekt, für das die Komprimierungstranscodierung verwendet wurde, und laden Sie es noch einmal in den Bucket hoch.
Eines der Objekte heißt
.. Ein solches Objekt wird nicht mit Planern und Workern synchronisiert und die Synchronisierung wird möglicherweise ganz beendet.Lösung: Benennen Sie das Objekt um.
Ein Ordner und eine DAG-Python-Datei haben denselben Namen, z. B.
a.py. In diesem Fall wird die DAG-Datei nicht ordnungsgemäß mit den Airflow-Komponenten synchronisiert.Lösung: Entfernen Sie den Ordner mit demselben Namen wie die DAG-Python-Datei.
Eines der Objekte in den Ordnern
/dagsoder/pluginsenthält am Ende des Objektnamens ein/-Symbol. Solche Objekte können den Synchronisierungsprozess stören, da das/-Symbol bedeutet, dass ein Objekt ein Ordner und keine Datei ist.Lösung: Entfernen Sie das
/-Symbol aus dem Namen des problematischen Objekts.Speichern Sie keine unnötigen Dateien in den Ordnern
/dagsund/plugins.Manchmal enthalten DAGs und Plug-ins, die Sie implementieren, zusätzliche Dateien, z. B. Dateien, in denen Tests für diese Komponenten gespeichert sind. Diese Dateien werden mit Workern und Planern synchronisiert und wirken sich auf die Zeit aus, die zum Kopieren dieser Dateien auf Planer, Worker und Webserver benötigt wird.
Lösung: Speichern Sie keine zusätzlichen und unnötigen Dateien in den Ordnern
/dagsund/plugins.
Worker und Planer generieren die Fehler „Is a directory“ oder „Is a file“
Dieses Problem tritt auf, weil Objekte in Cloud Storage überlappende Namespaces haben können, während die Airflow-Komponenten Ihrer Umgebung herkömmliche Linux-Dateisysteme verwenden. In Cloud Storage ist es möglich, einem Bucket sowohl einen Ordner als auch ein Objekt mit demselben Namen hinzuzufügen. Wenn der Bucket mit den Airflow-Komponenten der Umgebung synchronisiert wird, wird ein Fehler generiert:
- Wenn das Objekt zuerst synchronisiert wurde, werden die Inhalte des Ordners nicht synchronisiert und der Fehler
Is a filewird generiert. - Wenn der Ordner zuerst synchronisiert wurde, wird das Objekt nicht synchronisiert und der Fehler
Is a directorywird generiert.
Beispiel:
Done [Errno 21] Is a directory: '/home/airflow/gcs/dags/...'
Beide Fehler können aufgrund fehlender Dateien zu Aufgabenfehlern führen. In einigen Fällen kann der Synchronisierungsprozess unterbrochen werden und auch andere Objekte im Bucket der Umgebung werden nicht synchronisiert.
Lösung:
Achten Sie darauf, dass es im Bucket der Umgebung keine überlappenden Namespaces gibt, um dieses Problem zu beheben.
Wenn sich beispielsweise sowohl /dags/misc (ein Objekt) als auch /dags/misc/example_file.txt
(ein anderes Objekt) in einem Bucket befinden, benennen Sie entweder das Objekt misc oder den Ordner
um, in dem sich example_file.txt befindet, damit es keine Überschneidungen gibt.
Nächste Schritte
- Fehlerbehebung bei Problemen mit dem DAG-Prozessor
- Fehlerbehebung bei Airflow Scheduler-Problemen
- Fehlerbehebung bei DAGs