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
- Cloud Composer unterstützt die parallele Migration von Cloud Composer 1 zu Cloud Composer 2. Es ist nicht möglich, ein direktes Upgrade von Cloud Composer 1 auf Cloud Composer 2 durchzuführen.
- Liste der Unterschiede zwischen Cloud Composer 1 und Cloud Composer 2
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:
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf:
Wählen Sie Ihre Cloud Composer 1-Umgebung aus.
Sehen Sie sich Umgebungsvariablen auf dem Tab Umgebungsvariablen an.
Rufen Sie die Konfigurationsüberschreibungen auf den Tabs Airflow-Konfigurationsüberschreibungen auf.
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:
- Kopieren Sie die Konfiguration Ihrer Cloud Composer 1-Umgebung.
- Ändern Sie den Namen Ihrer Umgebung.
Verwenden Sie den Anbieter
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Geben Sie im Block
config.software_config
ein Cloud Composer-Image an:software_config { image_version = "composer-2.9.7-airflow-2.9.3" # ... }
Wenn nicht schon geschehen, geben Sie Konfigurationsüberschreibungen und Umgebungsvariablen an.
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
Rufen Sie in der Google Cloud Console die Seite Umgebungen auf:
Wählen Sie Ihre Cloud Composer 2-Umgebung aus.
Wechseln Sie zum Tab PyPI-Pakete und klicken Sie auf Bearbeiten.
Kopieren Sie die PyPI-Paketanforderungen aus Ihrer Cloud Composer 1-Umgebung. Klicken Sie auf Speichern und warten Sie, bis die Umgebung aktualisiert wurde.
gcloud
Erstellen Sie eine
requirements.txt
-Datei mit der Liste der benutzerdefinierten PyPI-Pakete:numpy scipy>=1.1.0
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
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.
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.
Rufen Sie den Bucket-URI Ihrer Cloud Composer 2-Umgebung ab.
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.
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
ings://us-central1-example-916807e1-bucket
.
Ü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.
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
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
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
Ü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
Prüfen Sie, ob der Ordner
/plugins
erfolgreich importiert wurde:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
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
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
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
Führen Sie den
connections
-Befehl der Airflow-Befehlszeile übergcloud
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
So rufen Sie eine Liste der Nutzer in Ihrer Cloud Composer 1-Umgebung auf:
Öffnen Sie die Airflow-Weboberfläche für Ihre Cloud Composer 1-Umgebung.
Klicken Sie auf Admin > Nutzer.
So erstellen Sie einen Nutzer in Ihrer Cloud Composer 2-Umgebung:
Öffnen Sie die Airflow-Weboberfläche für Ihre Cloud Composer 2-Umgebung.
Gehen Sie zu Sicherheit > Nutzer auflisten.
Klicken Sie auf Neuen Eintrag hinzufügen.
gcloud
-
Es ist nicht möglich, eine Liste der Nutzer über
gcloud
in Airflow 1 aufzurufen. Verwenden Sie die Airflow-Benutzeroberfläche. Führen Sie den Befehl
users create
der Airflow-Befehlszeile übergcloud
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:
Die DAGs werden erfolgreich ausgeführt und es gibt keine verbleibenden Kompatibilitätsprobleme.
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
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:
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
.Die DAGs werden aufgrund der Konfigurationsüberschreibung in der Cloud Composer 2-Umgebung pausiert, sodass keine DAG-Ausführungen geplant sind.
Wechseln Sie in der Airflow-Weboberfläche zu DAGs und suchen Sie nach gemeldeten DAG-Syntaxfehlern.
Zu dem Zeitpunkt, an dem Sie den DAG übertragen möchten:
Pausieren Sie die DAGs in Ihrer Cloud Composer 1-Umgebung.
Heben Sie die Pausierung der DAGs in Ihrer Cloud Composer 2-Umgebung auf.
Prüfen Sie, ob die neuen DAG-Ausführungen für den richtigen Zeitpunkt geplant sind.
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.
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:
Pausieren Sie den DAG in Ihrer Cloud Composer 2-Umgebung.
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
- Fehlerbehebung bei DAGs
- Fehlerbehebung beim Erstellen der Umgebung
- Fehlerbehebung bei Umgebungsupdates
- Backport-Pakete verwenden