Probleme bei der Dateisynchronisierung beheben

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Cloud Composer synchronisiert bestimmte Ordner im Bucket Ihrer Umgebung mit Airflow-Komponenten, 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 es wird erläutert, wie Sie diese Probleme beheben können.

Allgemeine Probleme

In den folgenden Abschnitten werden Symptome und mögliche Lösungen für einige häufig auftretende Probleme bei der Dateisynchronisierung beschrieben.

Eine große Anzahl von DAGs und Plug-ins in den Ordnern „dags“ und „plugins“ verarbeiten

Der Inhalt der Ordner /dags und /plugins wird aus dem Bucket Ihrer Umgebung mit den lokalen Dateisystemen von Airflow-Workern und -Planern synchronisiert.

Je mehr Daten in diesen Ordnern gespeichert sind, desto länger dauert die Synchronisierung. So können Sie solche Situationen angehen:

  • Begrenzen Sie die Anzahl der Dateien in den Ordnern /dags und /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 von Airflow-Planern und ‑Workern, damit der Synchronisierungsvorgang schneller ausgeführt wird.

  • Bei einer sehr großen Anzahl von DAGs sollten Sie sie in Batches aufteilen, in ZIP-Archive komprimieren und diese Archive im Ordner /dags bereitstellen. Dieser Ansatz beschleunigt die Synchronisierung von DAGs. Airflow-Komponenten entpacken ZIP-Archive, bevor sie DAGs verarbeiten.

  • Das programmatische Generieren von DAGs kann auch eine Methode sein, um die Anzahl der DAG-Dateien im Ordner /dags zu begrenzen. Im Abschnitt Programmgesteuerte DAGs auf der Seite zur Fehlerbehebung bei DAGs finden Sie Informationen dazu, wie Sie Probleme beim Planen und Ausführen von programmgesteuert generierten DAGs vermeiden können.

Antimuster, die sich auf die Synchronisierung von DAGs und Plug-ins mit Planern, Workern und Webservern auswirken

Cloud Composer synchronisiert den Inhalt der Ordner /dags und /plugins mit Planern und Workern. Bestimmte Objekte in den Ordnern /dags und /plugins können die Synchronisierung beeinträchtigen oder verlangsamen.

  • Der Ordner /dags wird mit Planern und Workern synchronisiert.

    Dieser Ordner wird nicht mit dem Webserver synchronisiert.

  • Der Ordner /plugins wird mit Planern, Workern und Webservern synchronisiert.

Die folgenden Probleme können auftreten:

  • Sie haben mit GZIP komprimierte Dateien, die [Komprimierungstranscodierung][storage-transcoding] verwenden, in die Ordner /dags und /plugins hochgeladen. Dies geschieht in der Regel, wenn Sie das Flag --gzip-local-all in einem gcloud 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 Mitarbeitern synchronisiert und die Synchronisierung kann ganz eingestellt werden.

    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 richtig mit Airflow-Komponenten synchronisiert.

    Lösung: Entfernen Sie den Ordner, der denselben Namen wie die Python-Datei des DAG hat.

  • Eines der Objekte in den Ordnern /dags oder /plugins enthält am Ende des Objektnamens das Symbol /. Solche Objekte können den Synchronisierungsprozess beeinträchtigen, da das Symbol / bedeutet, dass es sich bei einem Objekt um einen Ordner und nicht um eine Datei handelt.

    Lösung: Entfernen Sie das Symbol / aus dem Namen des problematischen Objekts.

  • Speichern Sie keine unnötigen Dateien in den Ordnern /dags und /plugins.

    Manchmal enthalten von Ihnen implementierte DAGs und Plug-ins 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 /dags und /plugins.

Der Fehler „Done [Errno 21] Is a directory: ‚/home/airflow/gcs/dags/...‘“ wird von Planern und Workern generiert.

Dieses Problem tritt auf, weil Objekte in Cloud Storage einen sich überschneidenden Namespace haben können, während gleichzeitig Planer und Worker herkömmliche Linux-Dateisysteme verwenden. So ist es beispielsweise möglich, sowohl einen Ordner als auch ein Objekt mit demselben Namen zum Bucket einer Umgebung hinzuzufügen. Wenn der Bucket mit den Planern und Workern der Umgebung synchronisiert wird, wird dieser Fehler generiert, was zu Aufgabenfehlern führen kann.

Achten Sie zur Behebung dieses Problems darauf, dass es im Bucket der Umgebung keine sich überschneidenden Namespaces gibt. Wenn sich beispielsweise sowohl /dags/misc (eine Datei) als auch /dags/misc/example_file.txt (eine andere Datei) in einem Bucket befinden, wird vom Scheduler ein Fehler generiert.

Nächste Schritte