Airflow-Planerprobleme beheben

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Diese Seite enthält Schritte zur Fehlerbehebung und Informationen zu häufigen Problemen mit Airflow-Planern.

Problemursache identifizieren

Ermitteln Sie zu Beginn der Fehlerbehebung, ob das Problem zur DAG-Parsing-Zeit oder bei der Verarbeitung von Aufgaben zur Ausführungszeit auftritt. Weitere Informationen zur Parsing- und zur Ausführungszeit finden Sie unter Unterschied zwischen der DAG-Parsing-Zeit und der DAG-Ausführungszeit.

DAG-Prozessor-Logs prüfen

Bei komplexen DAGs werden möglicherweise nicht alle DAGs vom DAG-Prozessor geparst, der vom Planer ausgeführt wird. Dies kann zu vielen Problemen mit den folgenden Symptomen führen.

Symptome:

  • Wenn beim DAG-Prozessor beim Parsen Ihrer DAGs Probleme auftreten, kann dies zu einer Kombination der unten aufgeführten Probleme führen. Wenn DAGs dynamisch generiert werden, können diese Probleme im Vergleich zu statischen DAGs stärkere Auswirkungen haben.

  • DAGs sind in der Airflow-UI und der DAG-UI nicht sichtbar.

  • DAGs werden nicht zur Ausführung geplant.

  • In den DAG-Prozessor-Logs sind Fehler enthalten, z. B.:

    dag-processor-manager [2023-04-21 21:10:44,510] {manager.py:1144} ERROR -
    Processor for /home/airflow/gcs/dags/dag-example.py with PID 68311 started
    at 2023-04-21T21:09:53.772793+00:00 has timed out, killing it.
    

    oder

    dag-processor-manager [2023-04-26 06:18:34,860] {manager.py:948} ERROR -
    Processor for /home/airflow/gcs/dags/dag-example.py exited with return
    code 1.
    
  • Bei Airflow-Planern treten Probleme auf, die zu Neustarts des Planers führen.

  • Airflow-Aufgaben, die zur Ausführung geplant sind, werden abgebrochen und DAG-Ausführungen für DAGs, die nicht geparst werden konnten, werden möglicherweise als failed markiert. Beispiel:

    airflow-scheduler Failed to get task '<TaskInstance: dag-example.task1--1
    manual__2023-04-17T10:02:03.137439+00:00 [removed]>' for dag
    'dag-example'. Marking it as removed.
    

Lösung

  • Erhöhen Sie die Parameter für das DAG-Parsing:

    • Erhöhen Sie dagbag-import-timeout auf mindestens 120 Sekunden (bei Bedarf auch mehr).

    • Erhöhen Sie dag-file-processor-timeout auf mindestens 180 Sekunden (bei Bedarf auch mehr). Dieser Wert muss größer als dagbag-import-timeout sein.

  • Korrigieren oder entfernen Sie DAGs, die Probleme mit dem DAG-Prozessor verursachen.

DAG-Parsing-Zeiten prüfen

Führen Sie folgende Schritte aus, um festzustellen, ob das Problem beim DAG-Parsen auftritt.

Console

In der Google Cloud Console können Sie auf der Seite Monitoring und dem Tab Protokolle die DAG-Parsezeiten prüfen.

Sie können die DAG-Parsing-Zeiten auf der Cloud Composer-Monitoring-Seite prüfen:

  1. Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Monitoring wird geöffnet.

  3. Prüfen Sie im Tab Monitoring das Diagramm Gesamte Parsing-Zeit für alle DAG-Dateien im Abschnitt DAG-Ausführungen und identifizieren Sie mögliche Probleme.

    Im Abschnitt „DAG-Ausführungen“ des Tabs „Composer Monitoring“ werden Statusmesswerte für die DAGs in Ihrer Umgebung angezeigt.

Sie können die DAG-Parsing-Zeiten auf dem Tab Cloud Composer-Protokolle prüfen:

  1. Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Monitoring wird geöffnet.

  3. Rufen Sie den Tab Protokolle auf und wählen Sie im Navigationsbaum Alle Protokolle den Bereich DAG-Prozessormanager aus.

  4. Prüfen Sie die dag-processor-manager-Protokolle und identifizieren Sie mögliche Probleme.

    In den Logs des DAG-Prozessors werden die DAG-Parsing-Zeiten angezeigt.

gcloud

Verwenden Sie den Befehl dags report, um die Parsing-Zeit für alle DAGs anzuzeigen.

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    dags report

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.

Die Ausgabe sieht dann ungefähr so aus:

Executing within the following Kubernetes cluster namespace: composer-2-0-31-airflow-2-3-3
file                  | duration       | dag_num | task_num | dags
======================+================+=========+==========+===================
/manydagsbig.py       | 0:00:00.038334 | 2       | 10       | serial-0,serial-0
/airflow_monitoring.py| 0:00:00.001620 | 1       | 1        | airflow_monitoring

Suchen Sie für jeden in der Tabelle aufgeführten DAG nach dem Wert duration. Ein hoher Wert kann darauf hinweisen, dass einer Ihrer DAGs nicht optimal implementiert ist. In der Ausgabetabelle können Sie ermitteln, welche DAGs eine lange Parsing-Zeit haben.

Laufende und in der Warteschlange befindliche Aufgaben überwachen

So prüfen Sie, ob Aufgaben in einer Warteschlange hängen:

  1. Rufen Sie in der Google Cloud Console die Seite Umgebungen auf.

    Zur Seite Umgebungen

  2. Klicken Sie in der Liste der Umgebungen auf den Namen Ihrer Umgebung. Die Seite Umgebungsdetails wird geöffnet.

  3. Rufen Sie den Tab Monitoring auf.

  4. Prüfen Sie im Tab Monitoring das Diagramm Airflow-Aufgaben im Abschnitt DAG-Ausführungen und identifizieren Sie mögliche Probleme. Airflow-Aufgaben sind Aufgaben, die sich in Airflow in einem Warteschlangenstatus befinden. Sie können entweder an die Celery- oder die Kubernetes Executor-Broker-Warteschlange gesendet werden. Tasks in der Celery-Warteschlange sind Taskinstanzen, die in die Celery-Broker-Warteschlange gestellt wurden.

Probleme zur DAG-Parsing-Zeit beheben

In folgenden Abschnitten werden Symptome und mögliche Lösungen für einige während der DAG-Parsing-Zeit häufig auftretende Probleme beschrieben.

Begrenzte Anzahl an Threads

Wenn Sie dem DAG-Prozessormanager (dem Teil des Planers, der DAG-Dateien verarbeitet) nur eine begrenzte Anzahl an Threads zuweisen, kann sich dies auf die DAG-Parsing-Zeit auswirken.

Überschreiben Sie die folgenden Airflow-Konfigurationsoptionen, um das Problem zu beheben:

  • Überschreiben Sie für Airflow 1.10.12 und frühere Versionen den max_threads-Parameter:

    Bereich Schlüssel Wert Hinweise
    scheduler max_threads NUMBER_OF_CORES_IN_MACHINE - 1 Ersetzen Sie NUMBER_OF_CORES_IN_MACHINE durch die Anzahl der Kerne
    auf den Maschinen der Worker-Knoten.
  • Überschreiben Sie für Airflow 1.10.14 und höher den Parameter parsing_processes:

    Bereich Schlüssel Wert Hinweise
    scheduler parsing_processes NUMBER_OF_CORES_IN_MACHINE - 1 Ersetzen Sie NUMBER_OF_CORES_IN_MACHINE durch die Anzahl der Kerne
    auf den Maschinen der Worker-Knoten.

Anzahl und Zeitverteilung der Aufgaben

Airflow ist dafür bekannt, dass bei der Planung einer großen Zahl kleiner Aufgaben Probleme auftreten. In solchen Situationen sollten Sie eine kleinere Anzahl konsolidierter Aufgaben verwenden.

Die gleichzeitige Planung einer großen Zahl an DAGs oder Aufgaben kann ebenfalls zu Problemen führen. Um dieses Problem zu vermeiden, verteilen Sie Ihre Aufgaben gleichmäßiger über die Zeit.

Fehlerbehebung bei laufenden und in der Warteschlange befindlichen Aufgaben

In folgenden Abschnitten werden Symptome und mögliche Lösungen für einige bei laufenden und in der Warteschlange befindlichen Aufgaben häufig auftretenden Problemen beschrieben.

Die Aufgabenwarteschlangen sind zu lang

In einigen Fällen sind die Aufgabenwarteschlangen für den Planer zu lang. Informationen zum Optimieren von Worker- und Celery-Parametern finden Sie unter Cloud Composer-Umgebung mit Ihrem Unternehmen skalieren.

Zeitplanfunktion des Airflow-Planers verwenden

Ab Airflow 2.2 können Sie mit der neuen Funktion „TimeTable“ einen Zeitplan für einen DAG definieren.

Sie können einen Zeitplan mit einer der folgenden Methoden definieren:

Eingeschränkte Clusterressourcen

Dieser Abschnitt gilt nur für Cloud Composer 1.

Wenn der GKE-Cluster Ihrer Umgebung zu klein ist, um alle DAGs und Aufgaben zu verarbeiten, können Leistungsprobleme auftreten. Versuchen Sie in diesem Fall eine der folgenden Lösungen:

  • Erstellen Sie eine neue Umgebung mit einem Maschinentyp, der mehr Leistung bietet, und migrieren Sie Ihre DAGs dorthin.
  • Erstellen Sie weitere Cloud Composer-Umgebungen und teilen Sie die DAGs zwischen ihnen auf.
  • Ändern Sie den Maschinentyp für GKE-Knoten wie unter Maschinentyp für GKE-Knoten aktualisieren beschrieben. Da dieses Verfahren fehleranfällig ist, ist es die am wenigsten empfohlene Option.
  • Führen Sie ein Upgrade des Maschinentyps der Cloud SQL-Instanz durch, auf der die Airflow-Datenbank in Ihrer Umgebung ausgeführt wird, z. B. mit den gcloud composer environments update-Befehlen. Eine geringe Leistung der Airflow-Datenbank kann der Grund sein, warum der Planer langsam arbeitet.

Aufgabenplanung während Wartungsfenstern vermeiden

Sie können für Ihre Umgebung bestimmte Wartungsfenster definieren. In diesen Zeiträumen werden Wartungsereignisse für Cloud SQL und GKE ausgeführt.

So bestimmen Sie, dass der Airflow-Planer unnötige Dateien ignoriert:

Sie können die Leistung des Airflow-Planers verbessern, wenn Sie unnötige Dateien im DAGs-Ordner überspringen. Der Airflow-Planer ignoriert Dateien und Ordner, die in der Datei .airflowignore angegeben sind.

So bestimmen Sie, dass der Airflow-Planer unnötige Dateien ignoriert:

  1. Erstellen Sie eine .airflowignore-Datei.
  2. Listen Sie in dieser Datei Dateien und Ordner auf, die ignoriert werden sollen.
  3. Laden Sie diese Datei in den Ordner /dags im Bucket Ihrer Umgebung hoch.

Weitere Informationen zum .airflowignore-Dateiformat finden Sie in der Airflow-Dokumentation.

Airflow-Planer verarbeitet pausierte DAGs

Airflow-Nutzer pausieren DAGs, um ihre Ausführung zu vermeiden. Dies spart Verarbeitungszyklen von Airflow-Workern.

Der Airflow-Planer parst pausierte DAGs weiter. Wenn Sie die Leistung des Airflow-Planers wirklich verbessern möchten, verwenden Sie .airflowignore oder löschen pausierte DAGs aus dem DAGs-Ordner.

Verwendung von "wait_for_downstream" in Ihren DAGs

Wenn Sie den Parameter wait_for_downstream in den DAGs auf True festlegen, müssen, damit eine Aufgabe erfolgreich ist, alle Aufgaben, die in Bezug auf diese Aufgabe unmittelbar nachgelagert sind, ebenfalls erfolgreich ausgeführt werden. Dies bedeutet, dass die Ausführung von Aufgaben, die zu einer bestimmten DAG-Ausführung gehören, durch die Ausführung von Aufgaben aus der vorherigen DAG-Ausführung verlangsamt werden kann. Weitere Informationen dazu finden Sie in der Airflow-Dokumentation.

Aufgaben, die zu lange in der Warteschlange stehen, werden abgebrochen und neu geplant.

Wenn eine Airflow-Aufgabe zu lange in der Warteschlange verbleibt, wird sie vom Scheduler noch einmal für die Ausführung geplant. In Airflow-Versionen vor 2.3.1 wird die Aufgabe auch als fehlgeschlagen markiert und noch einmal ausgeführt, sofern ein neuer Versuch möglich ist.

Eine Möglichkeit, die Symptome dieser Situation zu beobachten, besteht darin, sich das Diagramm mit der Anzahl der Aufgaben in der Warteschlange anzusehen (Tab „Monitoring“ in der Cloud Composer-Benutzeroberfläche). Wenn die Spitzen in diesem Diagramm innerhalb von etwa zwei Stunden nicht abfallen, werden die Aufgaben höchstwahrscheinlich neu geplant (ohne Protokolle), gefolgt von Protokolleinträgen in den Scheduler-Protokollen vom Typ „Übernommene Aufgaben waren noch ausstehend…“. In solchen Fällen wird in den Airflow-Aufgabenprotokollen möglicherweise die Meldung „Logfile is not found...“ (Logdatei wurde nicht gefunden) angezeigt, weil die Aufgabe nicht ausgeführt wurde.

Im Allgemeinen ist dieses Verhalten normal und die nächste Instanz der geplanten Aufgabe wird gemäß dem Zeitplan ausgeführt. Wenn Sie in Ihren Cloud Composer-Umgebungen viele solche Fälle feststellen, bedeutet das möglicherweise, dass nicht genügend Airflow-Worker in Ihrer Umgebung vorhanden sind, um alle geplanten Aufgaben zu verarbeiten.

Lösung: Um dieses Problem zu beheben, müssen Sie dafür sorgen, dass in den Airflow-Workern immer Kapazität vorhanden ist, um anstehende Aufgaben auszuführen. Sie können beispielsweise die Anzahl der Worker oder „worker_concurrency“ erhöhen. Sie können auch die Parallelität oder Pools optimieren, um zu verhindern, dass mehr Aufgaben in die Warteschlange gestellt werden, als Sie verarbeiten können.

Gelegentlich können veraltete Aufgaben die Ausführung eines bestimmten DAG blockieren.

Normalerweise sollte der Airflow-Planer mit Situationen umgehen können, in denen sich veraltete Aufgaben in der Warteschlange befinden und aus irgendeinem Grund nicht richtig ausgeführt werden können (z.B. wenn ein DAG, zu dem die veraltete Aufgabe gehört, gelöscht wurde).

Wenn diese veralteten Aufgaben nicht vom Scheduler gelöscht werden, müssen Sie sie möglicherweise manuell löschen. Sie können dies beispielsweise in der Airflow-Benutzeroberfläche tun. Gehen Sie dazu zu Menü > Browser > Aufgabeninstanzen, suchen Sie nach Aufgaben in der Warteschlange, die zu einem veralteten DAG gehören, und löschen Sie sie.

Aktualisieren Sie Ihre Umgebung auf Cloud Composer-Version 2.1.12 oder höher, um dieses Problem zu beheben.

Cloud Composer-Ansatz für den Parameter [scheduler]min_file_process_interval

Cloud Composer ändert die Verwendung von [scheduler]min_file_process_interval durch den Airflow-Planer.

Airflow 1

Wenn Cloud Composer Airflow 1 verwendet, können Nutzer den Wert für [scheduler]min_file_process_interval zwischen 0 und 600 Sekunden festlegen. Werte über 600 Sekunden führen zu denselben Ergebnissen wie bei einem Wert von 600 Sekunden für [scheduler]min_file_process_interval.

Airflow 2

In Airflow 2 kann [scheduler]min_file_process_interval nur mit den Versionen 1.19.9 und 2.0.26 oder höher verwendet werden.

  • Cloud Composer-Versionen vor 1.19.9 und 2.0.26

    In diesen Versionen wird [scheduler]min_file_process_interval ignoriert.

  • Cloud Composer-Versionen 1.19.9 oder 2.0.26 oder höher

    Der Airflow-Planer wird nach einer bestimmten Anzahl von geplanten DAGs neu gestartet. Der Parameter [scheduler]num_runs steuert, wie oft dies vom Planer geschieht. Wenn der Scheduler [scheduler]num_runs Planungsschleifen erreicht, wird er neu gestartet. Der Scheduler ist eine zustandslose Komponente und ein solcher Neustart ist ein automatischer Reparaturmechanismus für alle Probleme, die beim Scheduler auftreten können. Wenn keine Angabe erfolgt, wird der Standardwert [scheduler]num_runs (5.000) angewendet.

    Mit [scheduler]min_file_process_interval lässt sich konfigurieren, wie oft das DAG-Parsen erfolgt. Dieser Parameter darf jedoch nicht länger sein als die Zeit, die ein Planer benötigt, um beim Planen Ihrer DAGs [scheduler]num_runs-Schleifen auszuführen.

Airflow-Konfiguration skalieren

Airflow bietet Konfigurationsoptionen, die steuern, wie viele Aufgaben und DAGs es gleichzeitig ausführen kann. Um diese Konfigurationsoptionen festzulegen, überschreiben Sie deren Werte für Ihre Umgebung.

  • Worker-Gleichzeitigkeit

    Der Parameter [celery]worker_concurrency steuert die maximale Anzahl von Aufgaben, die ein Airflow-Worker gleichzeitig ausführen kann. Wenn Sie den Wert dieses Parameters mit der Anzahl der Airflow-Worker in Ihrer Cloud Composer-Umgebung multiplizieren, erhalten Sie die maximale Anzahl von Aufgaben, die zu einem bestimmten Zeitpunkt in Ihrer Umgebung ausgeführt werden können. Diese Zahl ist durch die Airflow-Konfigurationsoption [core]parallelism begrenzt, die unten weiter beschrieben wird.

    In Cloud Composer 2-Umgebungen wird der Standardwert für [celery]worker_concurrency automatisch berechnet.

    • Bei Airflow-Versionen 2.3.3 und höher wird [celery]worker_concurrency auf einen Mindestwert von 32, 12 * worker_CPU und 8 * worker_memory festgelegt.

    • Bei Airflow-Versionen 2.2.5 oder niedriger ist [celery]worker_concurrency auf 12 * Anzahl der CPUs der Worker festgelegt.

  • Maximale Anzahl aktiver DAG-Ausführungen

    Die Airflow-Konfigurationsoption [core]max_active_runs_per_dag steuert die maximale Anzahl aktiver DAG-Ausführungen pro DAG. Der Planer erstellt keine weiteren DAG-Ausführungen, wenn das Limit erreicht ist.

    Ist dieser Parameter falsch eingestellt, kann ein Problem auftreten, bei dem der Planer die DAG-Ausführung drosselt, da er zu einer bestimmten Zeit keine DAG-Ausführungsinstanzen mehr erstellen kann.

  • Maximale Anzahl aktiver Aufgaben pro DAG

    Die Airflow-Konfigurationsoption [core]max_active_tasks_per_dag steuert die maximale Anzahl an Aufgabeninstanzen, die pro DAG gleichzeitig ausgeführt werden können. Dies ist ein Parameter auf DAG-Ebene.

    Ist dieser Parameter falsch festgelegt, kann ein Problem auftreten, bei dem die Ausführung einer einzelnen DAG-Instanz langsam läuft, da nur eine begrenzte Anzahl an DAG-Aufgaben zu einer bestimmten Zeit ausgeführt werden können.

    Lösung: [core]max_active_tasks_per_dag erhöhen

  • Parallelität und Poolgröße

    Die Airflow-Konfigurationsoption [core]parallelism steuert, wie viele Aufgaben der Airflow-Planer in die Warteschlange des Executors stellen kann, nachdem alle Abhängigkeiten für diese Aufgaben erfüllt wurden.

    Dies ist ein globaler Parameter für die gesamte Airflow-Einrichtung.

    Aufgaben werden in die Warteschlange gestellt und in einem Pool ausgeführt. Cloud Composer-Umgebungen verwenden nur einen Pool. Die Größe dieses Pools steuert, wie viele Aufgaben der Planer in einem bestimmten Moment zur Ausführung in die Warteschlange stellen kann. Wenn die Poolgröße zu klein ist, kann der Planer Aufgaben nicht für die Ausführung in die Warteschlange stellen, auch wenn Grenzwerte, die durch die Konfigurationsoption [core]parallelism und die Konfigurationsoption [celery]worker_concurrency multipliziert mit der Anzahl der Airflow-Worker definiert sind, noch nicht erreicht sind.

    Sie können die Poolgröße in der Airflow-UI konfigurieren (Menü > Administrator > Pools). Passen Sie die Poolgröße an das Maß an Parallelität an, das Sie in Ihrer Umgebung erwarten.

    Normalerweise wird [core]parallelism als Produkt aus der maximalen Anzahl von Workern und [celery]worker_concurrency festgelegt.

DAGs werden aufgrund von Zeitüberschreitungen des DAG-Prozessors nicht vom Planer geplant

Weitere Informationen zu diesem Problem finden Sie unter Fehlerbehebung bei DAGs.

Aufgaben werden nach Erreichen von dagrun_timeout als fehlgeschlagen markiert

Der Planer kennzeichnet Aufgaben, die nicht abgeschlossen sind (ausgeführt, geplant und in der Warteschlange), als fehlgeschlagen, wenn eine DAG-Ausführung nicht innerhalb von dagrun_timeout (ein DAG-Parameter) abgeschlossen wird.

Lösung:

Symptome für eine überlastete Airflow-Datenbank

In den Airflow-Scheduler-Logs wird manchmal der folgende Warneintrag angezeigt:

Scheduler heartbeat got an exception: (_mysql_exceptions.OperationalError) (2006, "Lost connection to MySQL server at 'reading initial communication packet', system error: 0")"

Ähnliche Symptome können auch in den Airflow-Worker-Logs auftreten:

Für MySQL:

(_mysql_exceptions.OperationalError) (2006, "Lost connection to MySQL server at
'reading initial communication packet', system error: 0")"

Für PostgreSQL:

psycopg2.OperationalError: connection to server at ... failed

Solche Fehler oder Warnungen können ein Symptom dafür sein, dass die Airflow-Datenbank durch die Anzahl der offenen Verbindungen oder die Anzahl der Abfragen überlastet ist, die gleichzeitig von Planern oder anderen Airflow-Komponenten wie Workern, Triggern und Webservern ausgeführt werden.

Mögliche Lösungen:

Auf dem Webserver wird die Warnung „Der Planer wird anscheinend nicht ausgeführt“ angezeigt

Der Scheduler meldet seinen Heartbeat regelmäßig an die Airflow-Datenbank. Anhand dieser Informationen ermittelt der Airflow-Webserver, ob der Scheduler aktiv ist.

Wenn der Scheduler stark ausgelastet ist, kann er seinen Heartbeat manchmal nicht alle [scheduler]scheduler-heartbeat-sec melden.

In einem solchen Fall wird auf dem Airflow-Webserver möglicherweise die folgende Warnung angezeigt:

The scheduler does not appear to be running. Last heartbeat was received <X>
seconds ago.

Mögliche Lösungen:

  • Erhöhen Sie die CPU- und Arbeitsspeicherressourcen für den Planer.

  • Optimieren Sie Ihre DAGs, damit das Parsen und Planen schneller erfolgt und nicht zu viele Ressourcen des Planers verbraucht werden.

  • Verwenden Sie keine globalen Variablen in Airflow-DAGs: Cloud Composer-Umgebungsvariablen und Airflow-Variablen.

  • Erhöhen Sie den Wert von [scheduler]scheduler-health-check-threshold, damit der Webserver länger wartet, bevor er die Nichtverfügbarkeit des Schedulers meldet.

Problemumgehungen beim Backfilling von DAGs

Manchmal möchten Sie bereits ausgeführte DAGs noch einmal ausführen. So gehts mit dem Airflow-Befehlszeilentool:

Airflow 1

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location LOCATION \
  backfill -- -B \
  -s START_DATE \
  -e END_DATE \
  DAG_NAME

Wenn Sie nur fehlgeschlagene Aufgaben für einen bestimmten DAG noch einmal ausführen möchten, verwenden Sie auch das Argument --rerun_failed_tasks.

Airflow 2

gcloud composer environments run \
  ENVIRONMENT_NAME \
  --location LOCATION \
   dags backfill -- -B \
   -s START_DATE \
   -e END_DATE \
   DAG_NAME

Wenn Sie nur fehlgeschlagene Aufgaben für einen bestimmten DAG noch einmal ausführen möchten, verwenden Sie auch das Argument --rerun-failed-tasks.

Ersetzen Sie:

  • ENVIRONMENT_NAME durch den Namen der Umgebung.
  • LOCATION durch die Region, in der sich die Umgebung befindet.
  • START_DATE mit einem Wert für den DAG-Parameter start_date im YYYY-MM-DD-Format.
  • END_DATE mit einem Wert für den DAG-Parameter end_date im YYYY-MM-DD-Format.
  • DAG_NAME durch den Namen des DAG.

Durch den Backfill-Vorgang kann es manchmal zu einer Deadlock-Situation kommen, in der ein Backfill nicht möglich ist, weil eine Aufgabe gesperrt ist. Beispiel:

2022-11-08 21:24:18.198 CET DAG ID Task ID Run ID Try number
2022-11-08 21:24:18.201 CET -------- --------- -------- ------------
2022-11-08 21:24:18.202 CET 2022-11-08 21:24:18.203 CET These tasks are deadlocked:
2022-11-08 21:24:18.203 CET DAG ID Task ID Run ID Try number
2022-11-08 21:24:18.204 CET ----------------------- ----------- ----------------------------------- ------------
2022-11-08 21:24:18.204 CET <DAG name> <Task name> backfill__2022-10-27T00:00:00+00:00 1
2022-11-08 21:24:19.249 CET Command exited with return code 1
...
2022-11-08 21:24:19.348 CET Failed to execute job 627927 for task backfill

In einigen Fällen können Sie die folgenden Problemumgehungen verwenden, um Deadlocks zu überwinden:

Nächste Schritte