Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Questa pagina spiega come trasferire i DAG, i dati e la configurazione dai tuoi ambienti Airflow 1.10.* esistenti agli ambienti con Airflow 2 e versioni successive di Airflow.
Altre guide alla migrazione
Da | A | Metodo | Guida |
---|---|---|---|
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Affiancate, utilizzando gli snapshot | Guida alla migrazione (snapshot) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Affiancate, utilizzando gli snapshot | Guida alla migrazione (snapshot) |
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Trasferimento manuale fianco a fianco | Guida alla migrazione manuale |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Trasferimento manuale fianco a fianco | Guida alla migrazione manuale |
Flusso d'aria 1 | Flusso d'aria 2 | Trasferimento manuale fianco a fianco | Questa guida (migrazione manuale) |
Upgrade affiancati
Cloud Composer fornisce Lo script di trasferimento del database Cloud Composer per eseguire la migrazione del database di metadati, DAG, dati e plug-in di ambienti Cloud Composer con Airflow 1.10.14 e Airflow 1.10.15 a Cloud Composer esistente ambienti con Airflow 2.0.1 e versioni successive di Airflow.
Si tratta di un percorso alternativo a quello descritto in questa guida. Alcune parti di questa guida continuano a essere valide quando si utilizza lo script fornito. Ad esempio: potresti voler controllare la compatibilità dei DAG con Airflow 2 prima di eseguirne la migrazione o per assicurarti che le esecuzioni di DAG simultanee non si verificano e non sono presenti esecuzioni di DAG aggiuntive o mancanti.
Prima di iniziare
Prima di iniziare a utilizzare gli ambienti Cloud Composer con Airflow 2, considera le modifiche che Airflow 2 apporta agli ambienti Cloud Composer.
Alta disponibilità scheduler
Puoi utilizzare più di uno scheduler Airflow nel tuo ambiente. Puoi impostare il numero di scheduler quando crei un ambiente o aggiornando un ambiente esistente.
Esecutore Celery + Kubernetes
Airflow 2 Esecutore Celery + Kubernetes è supportato in Cloud Composer 3.
Modifiche che provocano un errore
Airflow 2 introduce molti cambiamenti importanti, alcuni dei quali si stanno interrompendo:
- Non è garantito che i DAG esistenti di Airflow 1.10.* funzionino con Airflow 2. Devono essere testati ed eventualmente modificati.
- Operatori, trasferimenti e hook migrati ai pacchetti dei provider. Le istruzioni di importazione nei DAG devono utilizzare nuovi pacchetti di provider. Le vecchie istruzioni di importazione potrebbero non funzionare più in Airflow 2.
- Alcune configurazioni di Airflow 1.10.* potrebbero non essere più supportate perché Airflow 2 non supporta più determinate opzioni di configurazione.
- Alcuni pacchetti PyPI personalizzati potrebbero non essere compatibili con la nuova versione di Airflow o Python.
- La UI di Airflow con controllo dell'accesso è la UI predefinita di Airflow 2. Airflow 2 non supporta altri tipi di UI di Airflow.
- L'API REST sperimentale viene sostituita dall'API Airflow stabile. L'API REST sperimentale è disabilitata per impostazione predefinita in Airflow 2.
- Altre modifiche importanti in Airflow 2.0.0
- Altre modifiche importanti in Airflow 2.0.1
Differenze tra gli ambienti con Airflow 2 e Airflow 1.10.*
Principali differenze tra gli ambienti Cloud Composer con Airflow 1.10.* e gli ambienti con Airflow 2:
- Gli ambienti con Airflow 2 utilizzano Python 3.8. Si tratta di una versione più recente di quella utilizzata negli ambienti Airflow 1.10.*. Python 2, Python 3.6, Python 3.7 non è supportato.
- Airflow 2 utilizza un formato dell'interfaccia a riga di comando diverso. Cloud Composer supporta il nuovo formato in ambienti con Airflow 2 tramite il comando
gcloud composer environments run
. - I pacchetti PyPI preinstallati sono diversi negli ambienti Airflow 2. Per un elenco dei pacchetti PyPI preinstallati, vedi Elenco delle versioni di Cloud Composer.
- La serie DAG è sempre abilitata in Airflow 2. Di conseguenza, il caricamento del DAG asincrono non è più necessario e non è supportato in Airflow 2. Di conseguenza, la configurazione dei parametri
[core]store_serialized_dags
e[core]store_dag_code
non è supportata per Airflow 2 e i tentativi di impostarli verranno segnalati come errori. - I plug-in dei server web di Airflow non sono supportati. Questo non influisce sui plug-in di scheduler o worker, inclusi gli operatori e i sensori di Airflow.
- Negli ambienti Airflow 2, il ruolo utente predefinito di Airflow è
Op
. Per gli ambienti con Airflow 1.10.*, il ruolo predefinito èAdmin
.
Passaggio 1: 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 nel tuo ambiente Airflow 1.10.* esistente.
gcloud
Se il tuo ambiente utilizza Airflow 1.10.14 e versioni precedenti, esegui l'upgrade dell'ambiente a una versione di Cloud Composer che utilizza Airflow 1.10.15 e versioni successive. Cloud Composer supporta i comandi di controllo degli upgrade a partire da Airflow 1.10.15.
Esegui i controlli dell'upgrade tramite
gcloud composer environments run
. Alcuni controlli dell'upgrade pertinenti per Airflow autonomo Le versioni 1.10.15 non sono rilevanti per Cloud Composer. Le seguenti esclude questi controlli.gcloud composer environments run \ AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION \ upgrade_check \ -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \ --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
Sostituisci:
AIRFLOW_1_ENV
con il nome del tuo ambiente Airflow 1.10.*AIRFLOW_1_LOCATION
con la regione in cui si trova l'ambiente.
Verifica l'output del comando. Gli script di controllo degli aggiornamenti segnalano potenziali problemi di compatibilità negli ambienti esistenti.
Implementare altre modifiche ai DAG, come descritto in Upgrade a Guida di Airflow 2.0+, nella sezione relativa eseguire l'upgrade dei DAG.
Passaggio 2: crea un ambiente Airflow 2, trasferisci gli override della configurazione e le variabili di ambiente
Creare un ambiente Airflow 2 e trasferire gli override della configurazione variabili di ambiente:
Segui i passaggi per creazione di un ambiente. Prima di creare un ambiente, specifica anche gli override della configurazione le variabili di ambiente, come illustrato nel dettaglio.
Quando selezioni un'immagine, scegli un'immagine con Airflow 2.
Trasferisci manualmente i parametri di configurazione da Airflow 1.10.* al nuovo ambiente Airflow 2.
Console
Quando crei un ambiente, espandi Networking, override della configurazione di Airflow e funzionalità aggiuntive .
In Override della configurazione di Airflow, fai clic su Aggiungi l'override della configurazione di Airflow.
Copia tutti gli override della configurazione da Airflow 1.10.* completamente gestito di Google Cloud.
Alcune opzioni di configurazione utilizzano un nome e una sezione diversi in Airflow 2. Per ulteriori informazioni, vedi Modifiche alla configurazione.
In Variabili di ambiente, fai clic su Aggiungi variabile di ambiente.
Copia tutte le variabili di ambiente dal tuo ambiente Airflow 1.10.*
Fai clic su Crea per creare un ambiente.
Passaggio 3: installa i pacchetti PyPI nell'ambiente Airflow 2
Dopo aver creato il tuo ambiente Airflow 2, installa i pacchetti PyPI al suo interno:
Console
Nella console Google Cloud, vai alla pagina Ambienti.
Seleziona il tuo ambiente Airflow 2.
Vai alla scheda Pacchetti PyPI e fai clic su Modifica.
Copia i requisiti del pacchetto PyPI dal tuo ambiente Airflow 1.10.*. Fai clic su Salva e attendi che l'ambiente venga aggiornato.
Poiché gli ambienti Airflow 2 utilizzano un insieme diverso di pacchetti preinstallati e una versione Python diversa, potresti riscontrare conflitti nei pacchetti PyPI difficili da risolvere. Un modo per diagnosticare i problemi di dipendenza dei pacchetti è verificare la presenza di errori del pacchetto PyPI installando i pacchetti in un pod worker Airflow.
Passaggio 4: trasferisci variabili e pool su Airflow 2
Airflow 1.10.* supporta l'esportazione di variabili e pool in file JSON. Puoi quindi importa questi file nel tuo ambiente Airflow 2.
Devi trasferire i pool solo se hai pool personalizzati diversi da
default_pool
. In caso contrario, salta i comandi che esportano e importano i pool.
gcloud
Esporta le variabili dal tuo ambiente Airflow 1.10.*:
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ variables -- -e /home/airflow/gcs/data/variables.json
Sostituisci:
AIRFLOW_1_ENV
con il nome del tuo ambiente Airflow 1.10.*AIRFLOW_1_LOCATION
con la regione in cui si trova l'ambiente.
Esporta i pool dal tuo ambiente Airflow 1.10.*:
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ pool -- -e /home/airflow/gcs/data/pools.json
Recupera l'URI del bucket di ambiente Airflow 2.
Esegui questo comando:
gcloud composer environments describe AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Sostituisci:
AIRFLOW_2_ENV
con il nome del tuo ambiente Airflow 2.AIRFLOW_2_LOCATION
con la regione in cui si trova l'ambiente individuarlo.
Nell'output, rimuovi la cartella
/dags
. Il risultato è l'URI del bucket di ambiente Airflow 2.Ad esempio, modifica
gs://us-central1-example-916807e1-bucket/dags
ags://us-central1-example-916807e1-bucket
.
Trasferisci file JSON con variabili e pool in Airflow 2 questo ambiente:
gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION \ --source=variables.json gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION \ --source=pools.json
Sostituisci
AIRFLOW_2_BUCKET
con l'URI dell'ambiente Airflow 2 ottenuto nel passaggio precedente.Importa variabili e pool in Airflow 2:
gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ variables import \ -- /home/airflow/gcs/data/variables.json gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ pools import \ -- /home/airflow/gcs/data/pools.json
Verifica che le variabili e i pool siano importati:
gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ variables list gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ pools list
Rimuovi i file JSON dai bucket:
gcloud composer environments storage data delete \ variables.json \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION gcloud composer environments storage data delete \ pools.json \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION gcloud composer environments storage data delete \ variables.json \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION gcloud composer environments storage data delete \ pools.json \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Passaggio 5: Trasferisci altri dati dal bucket di ambiente Airflow 1.10.*
gcloud
Trasferisci i plug-in su Airflow 2 completamente gestito di Google Cloud. Per farlo, esporta i plug-in da Airflow 1.10.* del bucket di ambiente nella cartella
/plugins
in Airflow 2 bucket di ambiente:gcloud composer environments storage plugins export \ --destination=AIRFLOW_2_BUCKET/plugins \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Verifica che la cartella
/plugins
sia stata importata correttamente:gcloud composer environments storage plugins list \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION
Esporta la cartella
/data
dal tuo ambiente Airflow 1.10.* nell'ambiente Ambiente Airflow 2:gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Verifica che la cartella
/data
sia stata importata correttamente:gcloud composer environments storage data list \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION
Passaggio 6: trasferisci connessioni e utenti
Airflow 1.10.* non supporta l'esportazione di utenti e connessioni. Per trasferire utenti e connessioni, creare manualmente nuovi account utente e connessioni dell'ambiente Airflow 2.
gcloud
Per ottenere un elenco delle connessioni nel tuo ambiente Airflow 1.10.*, esegui:
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ connections -- --list
Per creare una nuova connessione nel tuo ambiente Airflow 2, esegui
connections
Comando dell'interfaccia a riga di comando di Airflow attraverso gcloud. Ad esempio:gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_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
Per visualizzare un elenco di utenti nel tuo ambiente Airflow 1.10.*:
Apri l'interfaccia web di Airflow per il tuo ambiente Airflow 1.10.*
Vai ad Amministrazione > Utenti.
Per creare un nuovo account utente nel tuo ambiente Airflow 2, esegui
users create
Comando dell'interfaccia a riga di comando di Airflow attraverso gcloud. Ad esempio:gcloud composer environments run \ AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ users create \ -- --username example_username \ --firstname Example-Name \ --lastname Example-Surname \ --email example-user@example.com \ --use-random-password \ --role Admin
Passaggio 7: assicurati che i DAG siano pronti per Airflow 2
Prima di trasferire i DAG nel tuo ambiente Airflow 2, assicurati che:
L'upgrade dei controlli degli script per i DAG viene eseguito correttamente e non ci sono altri problemi di compatibilità.
I DAG utilizzano dichiarazioni di importazione corrette.
Ad esempio, la nuova istruzione di importazione
BigQueryCreateDataTransferOperator
può avere il seguente aspetto:from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
I tuoi DAG sono con upgrade eseguito per Airflow 2. Questa modifica è compatibile con Airflow 1.10.14 e versioni successive.
Passaggio 8: trasferisci i DAG all'ambiente Airflow 2
Quando trasferisci i DAG tra i seguenti, potrebbero verificarsi i seguenti problemi ambienti:
Se un DAG è abilitato (non in pausa) in entrambi gli ambienti, ogni ambiente viene eseguito una copia del DAG, come pianificato. Questo potrebbe portare a DAG simultanei e lo stesso tempo di esecuzione.
A causa di Recupero DAG, Airflow pianifica esecuzioni di DAG aggiuntive, a partire dalla data di inizio specificata nei tuoi DAG. Questo accade perché la nuova istanza Airflow non prende Nella cronologia delle esecuzioni dei DAG dall'ambiente 1.10.* Questo potrebbe comportare la pianificazione di un numero elevato di esecuzioni di DAG a partire dal data di inizio specificata.
Impedisci le esecuzioni simultanee di DAG
Nel tuo ambiente Airflow 2,
sostituire dags_are_paused_at_creation
Opzione di configurazione Airflow. Dopo aver apportato questa modifica, tutti i nuovi DAG vengono
sono in pausa per impostazione predefinita.
Sezione | Chiave | Valore |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Impedisci esecuzioni di DAG aggiuntive o mancanti
Specifica una nuova data di inizio statica nei DAG che trasferisci al tuo Ambiente Airflow 2.
Per evitare interruzioni e sovrapposizioni in date di esecuzione, la prima esecuzione di DAG deve avvenire nell'ambiente Airflow 2 al prossimo dell'intervallo pianificato. A questo scopo, imposta la nuova data di inizio nel Il DAG deve essere precedente alla data dell'ultima esecuzione nell'ambiente Airflow 1.10.*.
Ad esempio, se il DAG viene eseguito alle 15:00, alle 17:00 e alle 21:00 ogni giorno Airflow 1.10.*, l'ultima esecuzione del DAG è avvenuta alle 15:00 e pianifichi trasferire il DAG alle 15:15, la data di inizio del flusso Airflow 2 può essere oggi alle 14:45. Dopo aver abilitato il DAG in Airflow 2 Airflow pianifica l'esecuzione di un DAG per le 17:00.
Come ulteriore esempio, se il DAG viene eseguito alle 00:00 ogni giorno in Airflow 1.10.* dell'ambiente di rete, l'ultima esecuzione del DAG è avvenuta alle 00:00 del 26 aprile 2021 e trasferire il DAG alle 13:00 del 26 aprile 2021, quindi la data di inizio l'ambiente Airflow 2 può essere alle 23:45 del 25 aprile 2021. Una volta attivato il DAG nell'ambiente Airflow 2, Airflow programma un'esecuzione DAG per 00:00 il 27 Aprile 2021.
Trasferisci i tuoi DAG uno alla volta nell'ambiente Airflow 2
Per ogni DAG, segui questa procedura per trasferirlo:
Assicurati che la nuova data di inizio nel DAG sia impostata come descritto in sezione precedente.
Carica il DAG aggiornato all'ambiente Airflow 2. Questo DAG è in pausa in Airflow 2 dell'ambiente a causa dell'override della configurazione, quindi non vengono eseguite esecuzioni di DAG è già stata programmata.
Nella l'interfaccia web di Airflow, vai a DAG e controlla se sono stati segnalati errori di sintassi dei DAG.
Nel momento in cui prevedi di trasferire il DAG:
Metti in pausa il DAG nel tuo ambiente Airflow 1.10.*.
Riattiva il DAG nel tuo ambiente Airflow 2.
Verifica che la nuova esecuzione del DAG sia pianificata all'ora corretta.
Attendi che l'esecuzione del DAG venga eseguita nell'ambiente Airflow 2 e controlla se l'esecuzione ha esito positivo.
A seconda che l'esecuzione del DAG abbia esito positivo:
Se l'esecuzione del DAG ha esito positivo, puoi procedere e utilizzare il DAG dal tuo Ambiente Airflow 2. Infine, valuta la possibilità di eliminare Airflow 1.10.* del DAG.
Se l'esecuzione del DAG non è riuscita, prova a risolvi i problemi del DAG finché non viene eseguito correttamente in Airflow 2.
Se necessario, puoi sempre utilizzare la versione Airflow 1.10.* del DAG:
Metti in pausa il DAG nel tuo ambiente Airflow 2.
Riattiva il DAG nel tuo ambiente Airflow 1.10.*. Questo programma una nuova esecuzione di DAG per la stessa data e ora dell'esecuzione del DAG non riuscita.
Quando vuoi continuare con la versione Airflow 2 del DAG, regola la data di inizio, carica la nuova versione del DAG il tuo ambiente Airflow 2 e ripeti la procedura.
Passaggio 9: monitora l'ambiente Airflow 2
Dopo aver trasferito tutti i DAG e la configurazione nell'ambiente Airflow 2, monitoralo per individuare potenziali problemi, esecuzioni di DAG non riuscite e ambiente in generale l'integrità fisica. Se l'ambiente Airflow 2 viene eseguito senza problemi per una di tempo, puoi rimuovere l'ambiente Airflow 1.10.*.
Passaggi successivi
- Risoluzione dei problemi dei DAG
- Risolvere i problemi di creazione dell'ambiente
- Risoluzione dei problemi relativi agli aggiornamenti dell'ambiente
- Utilizzo dei pacchetti di backport