Umgebungen zu Cloud Composer 2 migrieren (von Airflow 1)

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Auf dieser Seite wird erläutert, wie Sie DAGs, Daten und Konfigurationen aus Ihren vorhandenen Cloud Composer 1-Umgebungen (Airflow 1) zu Cloud Composer 2 (Airflow 2) übertragen.

Weitere Migrationsleitfäden

Von Bis Methode Leitfaden
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Im Vergleich, mit Snapshots Migrationsanleitung (Snapshots)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Im Vergleich, mit Snapshots Migrationsleitfaden (Snapshots)
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Parallele, manuelle Übertragung Anleitung zur manuellen Migration
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Parallele, manuelle Übertragung Dieser Leitfaden (manuelle Migration)
Airflow 1 Airflow 2 Manuelle Übertragung nebeneinander Manuelle Migration

Hinweise

  • Da Cloud Composer 2 Airflow 2 verwendet, umfasst die Migration das Wechseln Ihrer DAGs und der Umgebungskonfiguration zu Airflow 2. Informationen zu den funktionsgefährdenden Änderungen zwischen Airflow 1 und Airflow 2 in Cloud Composer finden Sie im Leitfaden für die Migration von Airflow 1 zu Airflow 2.

  • In diesem Leitfaden kombinieren Sie die Migration zu Airflow 2 und die Migration zu Cloud Composer 2 in einem Migrationsverfahren. Auf diese Weise müssen Sie vor der Migration zu Cloud Composer 2 nicht zu einer Cloud Composer 1-Umgebung mit Airflow 2 migrieren.

Schritt 1: Upgrade auf Airflow 1.10.15 ausführen

Wenn Ihre Umgebung eine Airflow-Version vor 1.10.15 verwendet, führen Sie ein Upgrade Ihrer Umgebung durch, und zwar auf eine Cloud Composer-Version, die Airflow 1.10.15 verwendet.

Schritt 2: Kompatibilität mit Airflow 2 prüfen

Informationen zu möglichen Konflikten mit Airflow 2 finden Sie im Leitfaden zum Upgrade auf Airflow 2.0 oder höher im Abschnitt Upgrade von DAGs.

Ein häufig auftretendes Problem hängt mit einem inkompatiblen Import zusammen. Pfaden. Weitere Informationen zur Behebung dieses Kompatibilitätsproblems finden Sie in der Anleitung zum Upgrade auf Airflow 2.0 oder höher im Abschnitt zu Backport-Anbietern.

Schritt 3: Liste der Konfigurationsüberschreibungen, benutzerdefinierten PyPI-Pakete und Umgebungsvariablen abrufen

Console

Rufen Sie die Liste der Konfigurationsüberschreibungen, benutzerdefinierten PyPI-Pakete und Umgebungsvariablen der Cloud Composer 1-Umgebung ab:

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

    Zur Seite Umgebungen

  2. Wählen Sie Ihre Cloud Composer 1-Umgebung aus.

  3. Sehen Sie sich Umgebungsvariablen auf dem Tab Umgebungsvariablen an.

  4. Rufen Sie die Konfigurationsüberschreibungen auf den Tabs Airflow-Konfigurationsüberschreibungen auf.

  5. Benutzerdefinierte PyPI-Pakete finden Sie auf dem Tab PyPI-Pakete.

gcloud

Führen Sie folgenden Befehl aus, um die Liste der Umgebungsvariablen abzurufen:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.envVariables)"

Führen Sie folgenden Befehl aus, um die Liste der Airflow-Konfigurationsüberschreibungen der Umgebung abzurufen:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.airflowConfigOverrides)"

Führen Sie folgenden Befehl aus, um die Liste der benutzerdefinierten PyPI-Pakete abzurufen:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.pypiPackages)"

Ersetzen Sie:

  • COMPOSER_1_ENV durch den Namen der Cloud Composer 1-Umgebung.
  • COMPOSER_1_LOCATION durch die Region, in der sich die Cloud Composer 1-Umgebung befindet.

Terraform

Diesen Schritt überspringen. Die Konfiguration Ihrer Cloud Composer-Umgebung listet bereits Konfigurationsüberschreibungen, benutzerdefinierte PyPI-Pakete und Umgebungsvariablen der Umgebung auf.

Schritt 4: Cloud Composer 2-Umgebung erstellen

Erstellen Sie in diesem Schritt eine Cloud Composer 2-Umgebung. Sie können mit einer Umgebungsvoreinstellung beginnen, die Ihren erwarteten Ressourcenanforderungen entspricht, und später Ihre Umgebung skalieren und weiter optimieren.

Console

Erstellen Sie eine Cloud Composer 2-Umgebung und geben Sie Konfigurationsüberschreibungen und Umgebungsvariablen an.

Alternativ haben Sie folgende Möglichkeiten: Überschreiben Sie Airflow-Konfigurationen und Umgebungsvariablen, nachdem Sie eine Umgebung erstellt haben.

Einige Konfigurationsoptionen von Airflow 1 verwenden in Airflow 2 einen anderen Namen und Abschnitt. Weitere Informationen finden Sie unter Konfigurationsänderungen.

gcloud

Erstellen Sie eine Cloud Composer 2-Umgebung und geben Sie Konfigurationsüberschreibungen und Umgebungsvariablen an.

Alternativ haben Sie folgende Möglichkeiten: Überschreiben Sie Airflow-Konfigurationen und Umgebungsvariablen, nachdem Sie eine Umgebung erstellt haben.

Einige Konfigurationsoptionen von Airflow 1 verwenden in Airflow 2 einen anderen Namen und Abschnitt. Weitere Informationen finden Sie unter Konfigurationsänderungen.

Terraform

Erstellen Sie eine Cloud Composer 2-Umgebung anhand der Konfiguration der Cloud Composer 1-Umgebung:

  1. Kopieren Sie die Konfiguration Ihrer Cloud Composer 1-Umgebung.
  2. Ändern Sie den Namen Ihrer Umgebung.
  3. Verwenden Sie den Anbieter google-beta:

    resource "google_composer_environment" "example_environment_composer_2" {
      provider = google-beta
      # ...
    }
    
  4. Geben Sie im Block config.software_config ein Cloud Composer-Image an:

    software_config {
      image_version = "composer-2.9.7-airflow-2.9.3"
      # ...
    }
    
  5. Wenn nicht schon geschehen, geben Sie Konfigurationsüberschreibungen und Umgebungsvariablen an.

  6. Geben Sie benutzerdefinierte PyPI-Pakete im Block config.software_config.pypi_packages an:

    software_config {
    
      # ...
    
      pypi_packages = {
        numpy = ""
        scipy = ">=1.1.0"
      }
    
    }
    

Schritt 5: PyPI-Pakete in der Cloud Composer 2-Umgebung installieren

Installieren Sie nach dem Erstellen der Cloud Composer 2-Umgebung benutzerdefinierte PyPI-Pakete darin.

Console

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

    Zur Seite Umgebungen

  2. Wählen Sie Ihre Cloud Composer 2-Umgebung aus.

  3. Wechseln Sie zum Tab PyPI-Pakete und klicken Sie auf Bearbeiten.

  4. Kopieren Sie die PyPI-Paketanforderungen aus Ihrer Cloud Composer 1-Umgebung. Klicken Sie auf Speichern und warten Sie, bis die Umgebung aktualisiert wurde.

gcloud

  1. Erstellen Sie eine requirements.txt-Datei mit der Liste der benutzerdefinierten PyPI-Pakete:

      numpy
      scipy>=1.1.0
    
  2. Aktualisieren Sie Ihre Umgebung und übergeben Sie die Datei requirements.txt im Befehl --update-pypi-packages-from-file:

    gcloud composer environments update COMPOSER_2_ENV \
      --location COMPOSER_2_LOCATION  \
      --update-pypi-packages-from-file requirements.txt
    

    Ersetzen Sie:

    • COMPOSER_2_ENV durch den Namen der Cloud Composer 2-Umgebung.
    • COMPOSER_2_LOCATION durch die Region, in der sich die Cloud Composer 2-Umgebung befindet.

Terraform

Diesen Schritt überspringen. Sie haben beim Erstellen der Umgebung bereits benutzerdefinierte PyPI-Pakete installiert.

Schritt 6: Variablen und Pools übertragen

Airflow unterstützt den Export von Variablen und Pools in JSON-Dateien. Sie können diese Dateien dann in Ihre Cloud Composer 2-Umgebung importieren.

Die in diesem Schritt verwendeten Airflow-Befehlszeilenbefehle werden mit lokalen Dateien in Airflow-Workern ausgeführt. Verwenden Sie zum Hochladen oder Herunterladen der Dateien den Ordner /data im Cloud Storage-Bucket Ihrer Umgebung. Dieser Ordner wird mit dem Verzeichnis /home/airflow/gcs/data/ in Airflow-Workern synchronisiert. Geben Sie in den Befehlen der Airflow-Befehlszeile /home/airflow/gcs/data/ im Parameter FILEPATH an.

gcloud

  1. Exportieren Sie Variablen aus Ihrer Cloud Composer-1-Umgebung:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         variables -- -e /home/airflow/gcs/data/variables.json
    

    Ersetzen Sie:

    • COMPOSER_1_ENV durch den Namen der Cloud Composer 1-Umgebung.
    • COMPOSER_1_LOCATION durch die Region, in der sich die Cloud Composer 1-Umgebung befindet.
  2. Exportieren Sie Pools aus der Cloud Composer 1-Umgebung:

    gcloud composer environments run COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         pool -- -e /home/airflow/gcs/data/pools.json
    

    Ersetzen Sie:

    • COMPOSER_1_ENV durch den Namen der Cloud Composer 1-Umgebung.
    • COMPOSER_1_LOCATION durch die Region, in der sich die Cloud Composer 1-Umgebung befindet.
  3. Rufen Sie den Bucket-URI Ihrer Cloud Composer 2-Umgebung ab.

    1. Führen Sie dazu diesen Befehl aus:

      gcloud composer environments describe COMPOSER_2_ENV \
          --location COMPOSER_2_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      Ersetzen Sie:

      • COMPOSER_2_ENV durch den Namen der Cloud Composer 2-Umgebung.
      • COMPOSER_2_LOCATION durch die Region, in der sich die Umgebung befindet.
    2. Entfernen Sie in der Ausgabe den Ordner /dags. Das Ergebnis ist der URI des Buckets der Cloud Composer 2-Umgebung.

      Ändern Sie beispielsweise gs://us-central1-example-916807e1-bucket/dags in gs://us-central1-example-916807e1-bucket.

  4. Übertragen Sie JSON-Dateien mit Variablen und Pools in Ihre Cloud Composer 2-Umgebung:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=variables.json
    
    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=pools.json
    

    Ersetzen Sie:

    • COMPOSER_2_BUCKET durch den URI Ihres Cloud Composer 2-Umgebungs-Buckets, der im vorherigen Schritt abgerufen wurde.
    • COMPOSER_1_ENV durch den Namen der Cloud Composer 1-Umgebung.
    • COMPOSER_1_LOCATION durch die Region, in der sich die Cloud Composer 1-Umgebung befindet.
  5. Importieren Sie Variablen und Pools in Cloud Composer 2:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables import \
        -- /home/airflow/gcs/data/variables.json
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools import \
        -- /home/airflow/gcs/data/pools.json
    
  6. Prüfen Sie, ob Variablen und Pools importiert werden:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables list
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools list
    
  7. Entfernen Sie JSON-Dateien aus den Buckets:

    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    

Schritt 7: Andere Daten aus dem Bucket der Cloud Composer 1-Umgebung übertragen

Übertragen Sie Plug-ins und andere Daten aus dem Bucket Ihrer Cloud Composer 1-Umgebung.

gcloud

  1. Übertragen Sie Plug-ins in Ihre Cloud Composer 2-Umgebung. Exportieren Sie dazu Plug-ins aus dem Bucket der Cloud Composer 1-Umgebung in den Ordner /plugins des Buckets der Cloud Composer 2-Umgebung:

    gcloud composer environments storage plugins export \
        --destination=COMPOSER_2_BUCKET/plugins \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  2. Prüfen Sie, ob der Ordner /plugins erfolgreich importiert wurde:

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Exportieren Sie den Ordner /data aus Ihrer Cloud Composer 1-Umgebung in die Airflow-2-Umgebung:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  4. Prüfen Sie, ob der Ordner /data erfolgreich importiert wurde:

    gcloud composer environments storage data list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    

Schritt 8: Verbindungen übertragen

Airflow 1.10.15 unterstützt nicht den Export von Verbindungen. Erstellen Sie zum Übertragen von Verbindungen in der Cloud Composer 2-Umgebung manuell Verbindungen aus der Cloud Composer 1-Umgebung.

gcloud

  1. Führen Sie den folgenden Befehl aus, um eine Liste der Verbindungen in Ihrer Cloud Composer 1-Umgebung abzurufen:

    gcloud composer environments run COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         connections -- --list
    
  2. Führen Sie den connections-Befehl der Airflow-Befehlszeile über gcloud aus, um eine neue Verbindung in Ihrer Cloud Composer 2-Umgebung zu erstellen. Beispiel:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        connections add \
        -- --conn-host postgres.example.com \
        --conn-port 5432 \
        --conn-type postgres \
        --conn-login example_user \
        --conn-password example_password \
        --conn-description "Example connection" \
        example_connection
    

Schritt 9: Nutzerkonten übertragen

In diesem Schritt wird erläutert, wie Sie Nutzer manuell erstellen.

Airflow 1.10.15 unterstützt nicht den Export von Nutzern. Erstellen Sie zum Übertragen von Nutzern und Verbindungen manuell neue Nutzerkonten in Ihrer Airflow 2-Umgebung aus der Cloud Composer 1-Umgebung.

Airflow-UI

  1. So rufen Sie eine Liste der Nutzer in Ihrer Cloud Composer 1-Umgebung auf:

    1. Öffnen Sie die Airflow-Weboberfläche für Ihre Cloud Composer 1-Umgebung.

    2. Klicken Sie auf Admin > Nutzer.

  2. So erstellen Sie einen Nutzer in Ihrer Cloud Composer 2-Umgebung:

    1. Öffnen Sie die Airflow-Weboberfläche für Ihre Cloud Composer 2-Umgebung.

    2. Gehen Sie zu Sicherheit > Nutzer auflisten.

    3. Klicken Sie auf Neuen Eintrag hinzufügen.

gcloud

  1. Es ist nicht möglich, eine Liste der Nutzer über gcloud in Airflow 1 aufzurufen. Verwenden Sie die Airflow-Benutzeroberfläche.

  2. Führen Sie den Befehl users create der Airflow-Befehlszeile über gcloud aus, um ein neues Nutzerkonto in Ihrer Cloud Composer 2-Umgebung zu erstellen. Beispiel:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users create \
        -- --username example_username \
        --firstname Example-Name \
        --lastname Example-Surname \
        --email example-user@example.com \
        --use-random-password \
        --role Op
    

    Ersetzen Sie:

    • COMPOSER_2_ENV durch den Namen der Cloud Composer 2-Umgebung.
    • COMPOSER_2_LOCATION durch die Region, in der sich die Cloud Composer 2-Umgebung befindet.
    • Alle Nutzerkonfigurationsparameter durch ihre Werte aus Ihrer Cloud Composer 1-Umgebung, einschließlich der Rolle des Nutzers.

Schritt 10: Prüfen, ob Ihre DAGs für Airflow 2 bereit sind

Bevor Sie DAGs in Ihre Cloud Composer 1-Umgebung übertragen, müssen folgende Voraussetzungen erfüllt sein:

  1. Die DAGs werden erfolgreich ausgeführt und es gibt keine verbleibenden Kompatibilitätsprobleme.

  2. Ihre DAGs verwenden die richtigen Importanweisungen.

    Die neue Importanweisung für BigQueryCreateDataTransferOperator kann beispielsweise so aussehen:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Ihre DAGs werden für Airflow 2 aktualisiert. Diese Änderung ist mit Airflow 1.10.14 und höheren Versionen kompatibel.

Schritt 11: DAGs in die Cloud Composer 2-Umgebung übertragen

Die folgenden potenziellen Probleme können auftreten, wenn Sie DAGs zwischen Umgebungen übertragen:

  • Wenn ein DAG in beiden Umgebungen aktiviert (nicht pausiert) ist, führt jede Umgebung wie geplant eine eigene Kopie des DAG aus. Dies kann zu doppelten DAG-Ausführungen für dieselben Daten und zu den gleichen Ausführungszeiten führen.

  • Aufgrund des DAG-Catchups plant Airflow zusätzliche DAG-Ausführungen, beginnend ab dem in Ihren DAGs angegebenen Startdatum. Dies liegt daran, dass die neue Airflow-Instanz den Verlauf von DAG-Ausführungen aus der Cloud Composer 1-Umgebung nicht berücksichtigt. Dies kann zu einer großen Anzahl von geplanten DAG-Ausführungen ab dem angegebenen Startdatum führen.

Doppelte DAG-Ausführungen verhindern

Fügen Sie in Ihrer Cloud Composer 2-Umgebung (Airflow 2) eine Airflow-Konfigurationsoptionsüberschreibung für die Option dags_are_paused_at_creation hinzu. Nachdem Sie diese Änderung vorgenommen haben, werden alle neuen DAGs standardmäßig pausiert.

Bereich Schlüssel Wert
core dags_are_paused_at_creation True

Zusätzliche oder fehlende DAG-Ausführungen verhindern

Um Lücken und Überlappungen in Ausführungsterminen zu vermeiden, deaktivieren Sie den Catchup in Cloud Composer 2. Auf diese Weise plant Airflow nach dem Hochladen von DAGs in Ihre Cloud Composer 2-Umgebung keine DAG-Ausführungen, die bereits in der Cloud Composer 1-Umgebung ausgeführt wurden. Fügen Sie eine Airflow-Konfigurationsoptionsüberschreibung für die Option catchup_by_default hinzu:

Bereich Schlüssel Wert
scheduler catchup_by_default False

DAGs in die Cloud Composer 2-Umgebung übertragen

So übertragen Sie Ihre DAGs in die Cloud Composer 2-Umgebung:

  1. Führen Sie einen Upload des DAG aus der Cloud Composer 1-Umgebung in die Cloud Composer 2-Umgebung aus. Überspringen Sie den DAG airflow_monitoring.py.

  2. Die DAGs werden aufgrund der Konfigurationsüberschreibung in der Cloud Composer 2-Umgebung pausiert, sodass keine DAG-Ausführungen geplant sind.

  3. Wechseln Sie in der Airflow-Weboberfläche zu DAGs und suchen Sie nach gemeldeten DAG-Syntaxfehlern.

  4. Zu dem Zeitpunkt, an dem Sie den DAG übertragen möchten:

    1. Pausieren Sie die DAGs in Ihrer Cloud Composer 1-Umgebung.

    2. Heben Sie die Pausierung der DAGs in Ihrer Cloud Composer 2-Umgebung auf.

    3. Prüfen Sie, ob die neuen DAG-Ausführungen für den richtigen Zeitpunkt geplant sind.

    4. Warten Sie, bis die DAG-Ausführungen in der Cloud Composer 2-Umgebung erfolgt sind, und prüfen Sie, ob sie erfolgreich waren. Wenn eine DAG-Ausführung erfolgreich war, haben Sie ihre Pausierung in der Cloud Composer 1-Umgebung nicht auf. Andernfalls wird in der Cloud Composer 1-Umgebung ein DAG zur selben Zeit und am selben Datum ausgeführt.

  5. Wenn eine bestimmte DAG-Ausführung fehlschlägt, versuchen Sie, eine Fehlerbehebung für den DAG durchzuführen, bis er erfolgreich in Cloud Composer 2 ausgeführt wird.

    Bei Bedarf können Sie jederzeit auf die Cloud Composer 1-Version des DAG zurückgreifen und DAG-Ausführungen, die in Cloud Composer 2 fehlgeschlagen sind, in Ihrer Cloud Composer 1-Umgebung ausführen:

    1. Pausieren Sie den DAG in Ihrer Cloud Composer 2-Umgebung.

    2. Heben Sie die Pausierung des DAG in Ihrer Cloud Composer 1-Umgebung auf. Dadurch erfolgt ein Catchup für DAG-Ausführungen für den Zeitpunkt, zu dem der DAG in der Cloud Composer 1-Umgebung pausiert wurde.

Schritt 12: Cloud Composer 2-Umgebung überwachen

Nachdem Sie alle DAGs und Konfigurationen in die Cloud Composer 2-Umgebung übertragen haben, überwachen Sie diese auf potenzielle Probleme, fehlgeschlagene DAG-Ausführungen und den allgemeinen Umgebungsstatus. Wenn die Cloud Composer 2-Umgebung für einen ausreichend langen Zeitraum problemlos ausgeführt wird, sollten Sie die Cloud Composer 1-Umgebung vielleicht löschen.

Nächste Schritte