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 | Nebeneinander, mit Snapshots | Migrationsanleitung (Snapshots) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Nebeneinander, mit Snapshots | Migrationsanleitung (Snapshots) |
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Manuelle Übertragung nebeneinander | Dieses Handbuch (manuelle Migration) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Manuelle Übertragung nebeneinander | 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.
- Sehen Sie sich die Liste der Unterschiede zwischen Cloud Composer 1 und Cloud Composer 2.
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:
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 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:
- 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.1-airflow-2.9.1" # ... }
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 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
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 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
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.
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.
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 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
Ü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 6: Verbindungen übertragen
In diesem Schritt wird erläutert, wie Sie Verbindungen übertragen, indem Sie sie manuell erstellen.
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 7: Nutzerkonten übertragen
In diesem Schritt wird erläutert, wie Sie Nutzer manuell erstellen.
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.
Gehen Sie zu Sicherheit > Nutzer auflisten.
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
-
Führen Sie den Befehl
users list
der Airflow-Befehlszeile übergcloud
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.
Führen Sie den Befehl
users create
-Airflow-Befehlszeile bisgcloud
. 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.
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
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
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
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:
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 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
- Fehlerbehebung bei DAGs
- Fehlerbehebung beim Erstellen der Umgebung
- Fehlerbehebung bei Umgebungsupdates
- Backport-Pakete verwenden