Cloud Composer 1 | Cloud Composer 2
Questa pagina spiega come trasferire i DAG, i dati e la configurazione dai tuoi ambienti Cloud Composer 1, Airflow 1 e Cloud Composer esistenti a Cloud Composer 2, Airflow 2.
Altre guide alla migrazione
Da | A | Metodo | Guida |
---|---|---|---|
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Affiancato, tramite snapshot | Guida alla migrazione (snapshot) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Affiancato, tramite snapshot | Guida alla migrazione (snapshot) |
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Trasferimento manuale affiancato | Guida alla migrazione manuale |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Trasferimento manuale affiancato | Questa guida (migrazione manuale) |
Flusso d'aria 1 | Flusso d'aria 2 | Trasferimento manuale affiancato | Guida alla migrazione manuale |
Prima di iniziare
- Cloud Composer supporta la migrazione affiancata da Cloud Composer 1 a Cloud Composer 2. Non è possibile eseguire l'upgrade da Cloud Composer 1 a Cloud Composer 2 in loco.
- Consulta l'elenco delle differenze tra Cloud Composer 1 e Cloud Composer 2.
Poiché Cloud Composer 2 utilizza Airflow 2, la migrazione include il trasferimento dei DAG e della configurazione dell'ambiente a Airflow 2. Consulta la guida alla migrazione da Airflow 1 a Airflow 2 per informazioni sulle modifiche che provocano un errore tra Airflow 1 e Airflow 2 in Cloud Composer.
In questa guida, combini la migrazione a Airflow 2 e la migrazione a Cloud Composer 2 in un'unica procedura di migrazione. In questo modo, non è necessario eseguire la migrazione a un ambiente Cloud Composer 1 con Airflow 2 prima di eseguire la migrazione a Cloud Composer 2.
Passaggio 1: esegui l'upgrade a Airflow 1.10.15
Se il tuo ambiente utilizza una versione di Airflow precedente alla 1.10.15, esegui l'upgrade dell'ambiente a una versione di Cloud Composer che utilizzi Airflow 1.10.15.
Passaggio 2: controlla la compatibilità con Airflow 2
Per verificare la presenza di potenziali conflitti con Airflow 2, utilizza gli script di controllo dell'upgrade forniti da Airflow nell'ambiente Airflow 1.10.15 esistente.
gcloud
Esegui i controlli dell'upgrade tramite il comando
gcloud composer environments run
. Alcuni controlli degli upgrade pertinenti per Airflow 1.10.15 autonomo non sono pertinenti per Cloud Composer. Il seguente comando esclude questi controlli.gcloud composer environments run \ COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ upgrade_check \ -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \ --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
Sostituisci:
COMPOSER_1_ENV
con il nome del tuo ambiente Airflow 1.10.15.COMPOSER_1_LOCATION
con la regione in cui si trova l'ambiente.
Controlla l'output del comando. Gli script per il controllo degli aggiornamenti segnalano potenziali problemi di compatibilità negli ambienti esistenti.
Implementa altre modifiche ai DAG, come descritto nella guida all'upgrade a Airflow 2.0 e versioni successive, nella sezione sull'upgrade dei DAG.
Passaggio 3: recupera l'elenco degli override della configurazione, dei pacchetti PyPI personalizzati e delle variabili di ambiente
Console
Recupera l'elenco degli override della configurazione dell'ambiente Cloud Composer 1, dei pacchetti PyPI personalizzati e delle variabili di ambiente:
Vai alla pagina Ambienti nella console Google Cloud:
Seleziona il tuo ambiente Cloud Composer 1.
Visualizza le variabili di ambiente nella scheda Variabili di ambiente.
Visualizza gli override della configurazione nelle schede Override delle configurazioni di Airflow.
Visualizza i pacchetti PyPI personalizzati nella scheda Pacchetti PyPI.
gcloud
Per ottenere l'elenco delle variabili di ambiente, esegui:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.envVariables)"
Per ottenere l'elenco degli override della configurazione Airflow dell'ambiente, esegui:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.airflowConfigOverrides)"
Per ottenere l'elenco dei pacchetti PyPI personalizzati, esegui:
gcloud composer environments describe \
COMPOSER_1_ENV \
--location COMPOSER_1_LOCATION \
--format="value(config.softwareConfig.pypiPackages)"
Sostituisci:
COMPOSER_1_ENV
con il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATION
con la regione in cui si trova l'ambiente Cloud Composer 1.
Terraform
Ignora questo passaggio. Nella configurazione dell'ambiente Cloud Composer 1 sono già elencati gli override della configurazione, i pacchetti PyPI personalizzati e le variabili di ambiente per il tuo ambiente.
Passaggio 4: crea un ambiente Cloud Composer 2
In questo passaggio, crea un ambiente Cloud Composer 2. Puoi iniziare con un ambiente preimpostato che corrisponda alle richieste di risorse previste per poi scalare e ottimizzare ulteriormente l'ambiente.
Console
Crea un ambiente Cloud Composer 2 e specifica gli override della configurazione e le variabili di ambiente.
In alternativa, puoi eseguire l'override delle configurazioni di Airflow e delle variabili di ambiente dopo aver creato un ambiente.
Alcune opzioni di configurazione di Airflow 1 utilizzano una sezione e un nome diversi in Airflow 2. Per saperne di più, consulta Modifiche alla configurazione.
gcloud
Crea un ambiente Cloud Composer 2 e specifica gli override della configurazione e le variabili di ambiente.
In alternativa, puoi eseguire l'override delle configurazioni di Airflow e delle variabili di ambiente dopo aver creato un ambiente.
Alcune opzioni di configurazione di Airflow 1 utilizzano una sezione e un nome diversi in Airflow 2. Per saperne di più, consulta Modifiche alla configurazione.
Terraform
Crea un ambiente Cloud Composer 2 basato sulla configurazione dell'ambiente Cloud Composer 1:
- Copia la configurazione dell'ambiente Cloud Composer 1.
- Modifica il nome dell'ambiente.
Usa il provider
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Specifica un'immagine di Cloud Composer 2 nel blocco
config.software_config
:software_config { image_version = "composer-2.5.2-airflow-2.6.3" # ... }
In caso contrario, specifica gli override della configurazione e le variabili di ambiente.
Specifica pacchetti PyPI personalizzati nel blocco
config.software_config.pypi_packages
:software_config { # ... pypi_packages = { numpy = "" scipy = ">=1.1.0" } }
Passaggio 5: installa i pacchetti PyPI nell'ambiente Cloud Composer 2
Dopo aver creato l'ambiente Cloud Composer 2, installavi pacchetti PyPI personalizzati.
Console
Vai alla pagina Ambienti nella console Google Cloud:
Seleziona il tuo ambiente Cloud Composer 2.
Vai alla scheda Pacchetti PyPI e fai clic su Modifica.
Copia i requisiti dei pacchetti PyPI dal tuo ambiente Cloud Composer 1. Fai clic su Salva e attendi che l'ambiente venga aggiornato.
gcloud
Crea un file
requirements.txt
con l'elenco dei pacchetti PyPI personalizzati:numpy scipy>=1.1.0
Aggiorna l'ambiente e passa il file
requirements.txt
nel comando :to--update-pypi-packages-from-file
:gcloud composer environments update COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --update-pypi-packages-from-file requirements.txt
Sostituisci:
COMPOSER_2_ENV
con il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATION
con la regione in cui si trova l'ambiente Cloud Composer 2.
Terraform
Ignora questo passaggio. Hai già installato pacchetti PyPI personalizzati durante la creazione dell'ambiente.
Passaggio 6: trasferisci variabili e pool
Airflow supporta l'esportazione di variabili e pool in file JSON. Successivamente, potrai importare questi file nel tuo ambiente Cloud Composer 2.
I comandi dell'interfaccia a riga di comando di Airflow utilizzati in questo passaggio operano sui file locali nei worker di Airflow. Per caricare o scaricare i file, utilizza la cartella /data
nel bucket Cloud Storage del tuo ambiente. Questa cartella si sincronizza con la directory /home/airflow/gcs/data/
nei worker di Airflow. Nei comandi dell'interfaccia a riga di comando di Airflow, specifica /home/airflow/gcs/data/
nel parametro FILEPATH
.
gcloud
Esporta le variabili dall'ambiente Cloud Composer 1:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ variables -- -e /home/airflow/gcs/data/variables.json
Sostituisci:
COMPOSER_1_ENV
con il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATION
con la regione in cui si trova l'ambiente Cloud Composer 1.
Esporta i pool dal tuo ambiente Cloud Composer 1:
gcloud composer environments run COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ pool -- -e /home/airflow/gcs/data/pools.json
Sostituisci:
COMPOSER_1_ENV
con il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATION
con la regione in cui si trova l'ambiente Cloud Composer 1.
Recupera l'URI del bucket del tuo ambiente Cloud Composer 2.
Esegui questo comando:
gcloud composer environments describe COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Sostituisci:
COMPOSER_2_ENV
con il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATION
con la regione in cui si trova l'ambiente.
Nell'output, rimuovi la cartella
/dags
. Il risultato è l'URI del bucket del tuo ambiente Cloud Composer 2.Ad esempio, modifica
gs://us-central1-example-916807e1-bucket/dags
ings://us-central1-example-916807e1-bucket
.
Trasferisci i file JSON con variabili e pool nel tuo ambiente Cloud Composer 2:
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
Sostituisci:
COMPOSER_2_BUCKET
con l'URI del bucket di ambiente Cloud Composer 2, ottenuto nel passaggio precedente.COMPOSER_1_ENV
con il nome del tuo ambiente Cloud Composer 1.COMPOSER_1_LOCATION
con la regione in cui si trova l'ambiente Cloud Composer 1.
Importa variabili e pool 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
Verifica che le variabili e i pool siano importati:
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
Rimuovi i file JSON dai bucket:
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
Passaggio 7: trasferisci altri dati dal bucket del tuo ambiente Cloud Composer 1
Trasferisci plug-in e altri dati dal bucket del tuo ambiente Cloud Composer 1.
gcloud
Trasferisci i plug-in nel tuo ambiente Cloud Composer 2. Per farlo, esporta i plug-in dal bucket del tuo ambiente Cloud Composer 1 alla cartella
/plugins
nel bucket dell'ambiente Cloud Composer 2:gcloud composer environments storage plugins export \ --destination=COMPOSER_2_BUCKET/plugins \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Verifica che la cartella
/plugins
sia stata importata correttamente:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Esporta la cartella
/data
dall'ambiente Cloud Composer 1 all'ambiente Airflow 2:gcloud composer environments storage data export \ --destination=COMPOSER_2_BUCKET/data \ --environment=COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION
Verifica che la cartella
/data
sia stata importata correttamente:gcloud composer environments storage data list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
Passaggio 8: trasferisci le connessioni
Airflow 1.10.15 non supporta l'esportazione delle connessioni. Per trasferire le connessioni, crea manualmente le connessioni nel tuo ambiente Cloud Composer 2 dall'ambiente Cloud Composer 1.
gcloud
Per ottenere un elenco di connessioni nel tuo ambiente Cloud Composer 1, esegui:
gcloud composer environments run COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections -- --list
Per creare una nuova connessione nel tuo ambiente Cloud Composer 2, esegui il comando dell'interfaccia a riga di comando di Airflow
connections
tramitegcloud
. Ad esempio: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
Passaggio 9: trasferisci gli account utente
Questo passaggio spiega come trasferire gli utenti creandoli manualmente.
Airflow 1.10.15 non supporta l'esportazione degli utenti. Per trasferire utenti e connessioni, crea manualmente nuovi account utente nel tuo ambiente Airflow 2 dall'ambiente Cloud Composer 1.
UI di Airflow
Per visualizzare un elenco di utenti nel tuo ambiente Cloud Composer 1:
Apri l'interfaccia web di Airflow per il tuo ambiente Cloud Composer 1.
Vai ad Amministrazione > Utenti.
Per creare un utente nel tuo ambiente Cloud Composer 2:
Apri l'interfaccia web di Airflow per il tuo ambiente Cloud Composer 2.
Vai a Sicurezza > Elenca utenti.
Fai clic su Add a new record (Aggiungi un nuovo record).
gcloud
-
Non è possibile visualizzare un elenco di utenti tramite
gcloud
in Airflow 1. Utilizza l'interfaccia utente di Airflow. Per creare un nuovo account utente nel tuo ambiente Cloud Composer 2, esegui il comando dell'interfaccia a riga di comando di Airflow
users create
tramitegcloud
. Ad esempio: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
Sostituisci:
COMPOSER_2_ENV
con il nome del tuo ambiente Cloud Composer 2.COMPOSER_2_LOCATION
con la regione in cui si trova l'ambiente Cloud Composer 2.- Tutti i parametri di configurazione utente con i relativi valori provenienti dal tuo ambiente Cloud Composer 1, incluso il ruolo dell'utente.
Passaggio 10: assicurati che i DAG siano pronti per Airflow 2
Prima di trasferire i DAG al tuo ambiente Cloud Composer 1, assicurati che:
Gli script di controllo dell'upgrade per i DAG vengono eseguiti correttamente e non ci sono altri problemi di compatibilità.
I DAG utilizzano istruzioni di importazione corrette.
Ad esempio, la nuova istruzione di importazione per
BigQueryCreateDataTransferOperator
può avere il seguente aspetto:from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
Viene eseguito l'upgrade dei tuoi DAG per Airflow 2. Questa modifica è compatibile con Airflow 1.10.14 e versioni successive.
Passaggio 11: trasferisci i DAG nell'ambiente Cloud Composer 2
Quando trasferisci i DAG tra ambienti diversi, possono verificarsi i seguenti problemi:
Se un DAG è abilitato (non in pausa) in entrambi gli ambienti, ogni ambiente esegue la propria copia del DAG, come pianificato. Ciò potrebbe portare a esecuzioni di DAG duplicate per gli stessi dati e lo stesso tempo di esecuzione.
A causa del recupero DAG, Airflow pianifica esecuzioni di DAG aggiuntive a partire dalla data di inizio specificata nei DAG. Questo accade perché la nuova istanza di Airflow non prende in considerazione la cronologia delle esecuzioni dei DAG dall'ambiente Cloud Composer 1. Ciò potrebbe comportare la pianificazione di un numero elevato di esecuzioni di DAG a partire dalla data di inizio specificata.
Impedisci le esecuzioni di DAG duplicate
Nel tuo ambiente Cloud Composer 2, nel tuo ambiente Airflow 2, aggiungi
un override dell'opzione di configurazione Airflow per l'opzione
dags_are_paused_at_creation
. Dopo aver apportato questa modifica, tutti i nuovi DAG vengono messi in pausa per impostazione predefinita.
Sezione | Chiave | Valore |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Evitare le esecuzioni DAG aggiuntive o mancanti
Per evitare lacune e sovrapposizioni nelle date di esecuzione, disabilita il ripristino in Cloud Composer 2. In questo modo, dopo aver caricato i DAG nel tuo ambiente Cloud Composer 2, Airflow non pianifica le esecuzioni di DAG già eseguite nell'ambiente Cloud Composer 1. Aggiungi un override dell'opzione di configurazione Airflow per l'opzione catchup_by_default
:
Sezione | Chiave | Valore |
---|---|---|
scheduler |
catchup_by_default |
False |
Trasferisci i tuoi DAG nell'ambiente Cloud Composer 2
Per trasferire i tuoi DAG nell'ambiente Cloud Composer 2:
Carica il DAG dall'ambiente Cloud Composer 1 all'ambiente Cloud Composer 2. Salta il DAG
airflow_monitoring.py
.I DAG vengono messi in pausa nell'ambiente Cloud Composer 2 a causa dell'override della configurazione, pertanto non vengono pianificate esecuzioni di DAG.
Nell'interfaccia web di Airflow, vai a DAG e verifica la presenza di errori di sintassi DAG segnalati.
Nel momento in cui prevedi di trasferire il DAG:
Metti in pausa i DAG nel tuo ambiente Cloud Composer 1.
Riattiva i DAG nel tuo ambiente Cloud Composer 2.
Verifica che le nuove esecuzioni di DAG siano pianificate all'ora corretta.
Attendi che le esecuzioni DAG vengano eseguite nell'ambiente Cloud Composer 2 e controlla se l'operazione è riuscita. Se un'esecuzione DAG ha esito positivo, non riattivarla nell'ambiente Cloud Composer 1; in questo caso, un DAG viene eseguito per la stessa ora e la stessa data nel tuo ambiente Cloud Composer 1.
Se l'esecuzione di un DAG specifico non va a buon fine, prova a risolvere i problemi del DAG finché non viene eseguito correttamente in Cloud Composer 2.
Se necessario, puoi sempre tornare alla versione di Cloud Composer 1 del DAG ed eseguire esecuzioni DAG non riuscite in Cloud Composer 2 dal tuo ambiente Cloud Composer 1:
Metti in pausa il DAG nel tuo ambiente Cloud Composer 2.
Riattiva il DAG nel tuo ambiente Cloud Composer 1. Questa pianifica il recupero delle esecuzioni DAG per il periodo in cui il DAG è stato messo in pausa nell'ambiente Cloud Composer 1.
Passaggio 12: monitora l'ambiente Cloud Composer 2
Dopo aver trasferito tutti i DAG e la configurazione nell'ambiente Cloud Composer 2, monitorali per individuare potenziali problemi, le esecuzioni di DAG non riuscite e l'integrità complessiva dell'ambiente. Se l'ambiente Cloud Composer 2 viene eseguito senza problemi per un periodo di tempo sufficiente, valuta la possibilità di eliminare l'ambiente Cloud Composer 1.
Passaggi successivi
- Risoluzione dei problemi dei DAG
- Risoluzione dei problemi relativi alla creazione dell'ambiente
- Risoluzione dei problemi relativi agli aggiornamenti dell'ambiente
- Utilizzare i pacchetti di backport