Umgebungen zu Cloud Composer 2 migrieren (von Airflow 2)

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 2) 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 Migrationsleitfaden (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 Dieser Leitfaden (manuelle Migration)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Parallele, manuelle Übertragung Manuelle Migration
Airflow 1 Airflow 2 Parallele, manuelle Übertragung Manuelle Migration

Hinweise

Schritt 1: 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 2: 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.

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.

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 3: 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 befindet sich die Cloud Composer 2-Umgebung.

Terraform

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

Schritt 4: 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 export -- /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 \
         pools export -- /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 5: 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 6: Verbindungen übertragen

In diesem Schritt wird erläutert, wie Sie Verbindungen übertragen, indem Sie sie manuell erstellen.

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 7: Nutzerkonten übertragen

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

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. Gehen Sie zu Sicherheit > Nutzer auflisten.

  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. Führen Sie den Befehl users list der Airflow-Befehlszeile über gcloud aus, um eine Liste der Nutzer in Ihrer Cloud Composer 1-Umgebung aufzurufen:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users list
    

    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. 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.

Alternative Möglichkeit zum Übertragen von Nutzerkonten

Alternativ können Sie die Airflow-Befehlszeilenbefehle users export und users import verwenden.

  1. Exportieren Sie Nutzerkonten in eine Datei im Bucket-Ordner /data Ihrer Umgebung:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users export -- /home/airflow/gcs/data/users.json
    
  2. Exportieren Sie diese Datei in den Bucket Ihrer Cloud Composer 2-Umgebung:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=users.json
    
  3. Importieren Sie Nutzerkonten aus dieser Datei in Ihre Cloud Composer 2-Umgebung:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users import \
        -- /home/airflow/gcs/data/users.json
    
  4. Löschen Sie die JSON-Dateien in beiden Umgebungen:

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

Ersetzen Sie:

  • COMPOSER_1_ENV durch den Namen der Cloud Composer 1-Umgebung.
  • COMPOSER_2_ENV durch den Namen der Cloud Composer 2-Umgebung.
  • COMPOSER_1_LOCATION durch die Region, in der sich die Cloud Composer 1-Umgebung befindet.
  • COMPOSER_2_LOCATION durch die Region, in der sich die Cloud Composer 2-Umgebung befindet.
  • COMPOSER_2_BUCKET durch den URI Ihres Cloud Composer 2-Umgebungs-Buckets, der im vorherigen Schritt abgerufen wurde.

Schritt 8: 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 9: 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