Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Cette page explique comment transférer des DAG, des données et une configuration depuis vos environnements Airflow 1.10* existants vers des environnements Airflow 2 et versions ultérieures.
Autres guides de migration
De | À | Méthode | Guide |
---|---|---|---|
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Côte à côte, à l'aide d'instantanés | Guide de migration (instantanés) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Côte à côte, à l'aide d'instantanés | Guide de migration (instantanés) |
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Transfert manuel côte à côte | Guide de migration manuelle |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transfert manuel côte à côte | Guide de migration manuelle |
Airflow 1 | Airflow 2 | Transfert manuel côte à côte | Ce guide (migration manuelle) |
Mises à jour en parallèle
Cloud Composer fournit le script de transfert de base de données Cloud Composer pour migrer la base de données de métadonnées, les DAG, les données et les plug-ins des environnements Cloud Composer avec Airflow 1.10.14 et Airflow 1.10.15 vers des environnements Cloud Composer existants avec Airflow 2.0.1 et versions ultérieures.
Il s'agit d'un autre chemin d'accès que celui décrit dans ce guide. Certaines parties de ce guide s'appliquent toujours lors de l'utilisation du script fourni. Par exemple, vous souhaiterez peut-êtreVérifier la compatibilité de vos DAG avec Airflow 2 avant de les migrer, ou pour vous assurer queLes exécutions DAG simultanées ne se produisent pas et il n'y a pas d'exécutions DAG supplémentaires ou manquantes.
Avant de commencer
Avant de commencer à utiliser les environnements Cloud Composer avec Airflow 2, prenez en compte les modifications apportées par Airflow 2 aux environnements Cloud Composer.
Haute disponibilité du programmeur
Vous pouvez utiliser plusieurs programmeurs Airflow dans votre environnement. Vous pouvez définir le nombre de programmeurs lorsque vous créez un environnement ou en mettant à jour un environnement existant.
Celery+Kubernetes Executor
Airflow 2 Executor Celery+Kubernetes est compatible avec Cloud Composer 3.
Modifications importantes
Airflow 2 introduit de nombreuses modifications majeures, dont certaines introduisent une rupture :
- Il n'est pas garanti que les DAG existants d'Airflow 1.10.* fonctionnent avec Airflow 2. Ils doivent être testés et éventuellement ajustés.
- Les opérateurs, les transferts et les hooks doivent être migrés vers les packages de fournisseurs. Les instructions d'importation dans les DAG doivent utiliser de nouveaux packages de fournisseurs. Les anciennes instructions d'importation peuvent ne plus fonctionner dans Airflow 2.
- Certaines configurations Airflow 1.10.* peuvent ne plus être compatibles, car Airflow 2 n'est plus compatible avec certaines options de configuration.
- Certains packages PyPI personnalisés peuvent être incompatibles avec la nouvelle version d'Airflow ou de Python.
- L'interface utilisateur d'Airflow avec contrôle d'accès est l'interface utilisateur d'Airflow 2 par défaut. Airflow 2 n'est pas compatible avec les autres types d'interface utilisateur Airflow.
- L'API REST expérimentale est remplacée par l'API Airflow stable. L'API REST expérimentale est désactivée par défaut dans Airflow 2.
- Autres modifications majeures dans Airflow 2.0.0
- Autres modifications majeures dans Airflow 2.0.1
Différences entre les environnements Airflow 2 et Airflow 1.10*
Principales différences entre les environnements Cloud Composer avec Airflow 1.10* et les environnements avec Airflow 2 :
- Les environnements Airflow 2 utilisent Python 3.8. Il s'agit d'une version plus récente que celle utilisée dans les environnements Airflow 1.10.*. Python 2, Python 3.6 et Python 3.7 ne sont pas compatibles.
- Airflow 2 utilise un format CLI différent. Cloud Composer accepte le nouveau format dans les environnements Airflow 2 via la commande
gcloud composer environments run
. - Les packages PyPI préinstallés sont différents dans les environnements Airflow 2. Pour obtenir la liste des packages PyPI préinstallés, consultez la liste des versions Cloud Composer.
- La sérialisation des DAG est toujours activée dans Airflow 2. Par conséquent, le chargement asynchrone des DAG n'est plus nécessaire et il n'est pas compatible avec Airflow 2. Par conséquent, la configuration des paramètres
[core]store_serialized_dags
et[core]store_dag_code
n'est pas compatible avec Airflow 2, et les tentatives de définition de ces paramètres sont signalées comme des erreurs. - Les plug-ins du serveur Web Airflow ne sont pas compatibles. Cela n'affecte pas les plug-ins du programmeur ou du nœud de calcul, y compris les opérateurs et les capteurs Airflow.
- Dans les environnements Airflow 2, le rôle utilisateur Airflow par défaut est
Op
. Pour les environnements Airflow 1.10.*, le rôle par défaut estAdmin
.
Étape 1 : Vérifier la compatibilité avec Airflow 2
Pour vérifier les conflits potentiels avec Airflow 2, consultez la le guide Airflow 2.0 et versions ultérieures, dans la section mise à niveau des DAG.
Un problème courant que vous pourriez rencontrer est lié à l'importation incompatible chemins d'accès. Pour plus d'informations sur la résolution de ce problème de compatibilité, dans le guide de mise à niveau vers Airflow 2.0 et versions ultérieures, consultez la section sur les fournisseurs de rétroportage.
Étape 2 : Créez un environnement Airflow 2, remplacez les remplacements de configuration et les variables d'environnement
Créez un environnement Airflow 2 et transférez les remplacements de configuration et les variables d'environnement :
Suivez la procédure permettant de créer un environnement. Avant de créer un environnement, spécifiez également les remplacements de configuration et les variables d'environnement, comme expliqué plus en détail.
Lorsque vous sélectionnez une image, choisissez une image avec Airflow 2.
Transférez manuellement les paramètres de configuration de votre environnement Airflow 1.10.* vers le nouvel environnement Airflow 2.
Console
Lorsque vous créez un environnement, développez la section Mise en réseau, remplacements de configuration Airflow et fonctionnalités supplémentaires.
Sous Remplacements de configuration Airflow, cliquez sur Ajouter un remplacement de configuration Airflow.
Copiez tous les remplacements de configuration depuis votre environnement Airflow 1.10.*.
Certaines options de configuration utilisent un nom et une section différents dans Airflow 2. Pour en savoir plus, consultez la section Modifications de configuration.
Sous Variables d'environnement, cliquez sur Ajouter une variable d'environnement.
Copiez toutes les variables d'environnement à partir de votre environnement Airflow 1.10.*.
Cliquez sur Créer pour créer un environnement.
Étape 3 : Installez les packages PyPI dans l'environnement Airflow 2
Une fois l'environnement Airflow 2 créé, installez-y les packages PyPI :
Console
Dans la console Google Cloud, accédez à la page Environnements.
Sélectionnez votre environnement Airflow 2.
Accédez à l'onglet Packages PyPI, puis cliquez sur Modifier.
Copiez les exigences de package PyPI à partir de votre environnement Airflow 1.10.*. Cliquez sur Enregistrer et attendez la mise à jour de l'environnement.
Étant donné que les environnements Airflow 2 utilisent un ensemble différent de packages préinstallés et une version différente de Python, vous pouvez rencontrer des conflits de packages PyPI difficiles à résoudre. Pour diagnostiquer les problèmes de dépendance des packages, vous pouvez rechercher les erreurs de package PyPI en installant des packages dans un pod de nœuds de calcul Airflow.
Étape 4 : Transférez les variables et les pools vers Airflow 2
Airflow 1.10.* est compatible avec l'exportation de variables et de pools vers des fichiers JSON. Vous pouvez ensuite importer ces fichiers dans votre environnement Airflow 2.
Vous ne devez transférer des pools que si vous disposez de pools personnalisés autres que default_pool
. Sinon, ignorez les commandes qui exportent et importent des pools.
gcloud
Exportez les variables depuis votre environnement Airflow 1.10* :
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ variables -- -e /home/airflow/gcs/data/variables.json
Remplacez :
AIRFLOW_1_ENV
par le nom de votre environnement Airflow 1.10.*AIRFLOW_1_LOCATION
par la région où se trouve l'environnement.
Exportez des pools à partir de votre environnement Airflow 1.10* :
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ pool -- -e /home/airflow/gcs/data/pools.json
Obtenez l'URI de votre bucket d'environnement Airflow 2.
Exécutez la commande suivante :
gcloud composer environments describe AIRFLOW_2_ENV \ --location AIRFLOW_2_LOCATION \ --format="value(config.dagGcsPrefix)"
Remplacez :
AIRFLOW_2_ENV
par le nom de votre environnement Airflow 2.AIRFLOW_2_LOCATION
par la région dans laquelle se trouve l'environnement.
Dans le résultat, supprimez le dossier
/dags
. Le résultat est l'URI de votre bucket d'environnement Airflow 2.Par exemple, remplacez
gs://us-central1-example-916807e1-bucket/dags
pargs://us-central1-example-916807e1-bucket
.
Transférez des fichiers JSON avec des variables et des pools vers votre environnement Airflow 2 :
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
Remplacez
AIRFLOW_2_BUCKET
par l'URI de votre bucket d'environnement Airflow 2 obtenu à l'étape précédente.Importez des variables et des pools dans 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
Vérifiez que les variables et les pools sont importés :
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
Supprimez les fichiers JSON des buckets :
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
Étape 5 : Transférez d'autres données à partir de votre bucket d'environnement Airflow 1.10*
gcloud
Transférez les plug-ins vers votre environnement Airflow 2. Pour ce faire, exportez les plug-ins de votre bucket d'environnement Airflow 1.10.* vers le dossier
/plugins
de votre bucket d'environnement Airflow 2 :gcloud composer environments storage plugins export \ --destination=AIRFLOW_2_BUCKET/plugins \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Vérifiez que le dossier
/plugins
a bien été importé :gcloud composer environments storage plugins list \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION
Exportez le dossier
/data
de votre environnement Airflow 1.10.* vers l'environnement Airflow 2 :gcloud composer environments storage data export \ --destination=AIRFLOW_2_BUCKET/data \ --environment=AIRFLOW_1_ENV \ --location=AIRFLOW_1_LOCATION
Vérifiez que le dossier
/data
a bien été importé :gcloud composer environments storage data list \ --environment=AIRFLOW_2_ENV \ --location=AIRFLOW_2_LOCATION
Étape 6 : Transférer les connexions et les utilisateurs
Airflow 1.10.* n'est pas compatible avec l'exportation d'utilisateurs et de connexions. Pour transférer des utilisateurs et des connexions, créez manuellement de nouveaux comptes utilisateur et des connexions dans votre environnement Airflow 2.
gcloud
Pour obtenir la liste des connexions de votre environnement Airflow 1.10*, exécutez la commande suivante :
gcloud composer environments run AIRFLOW_1_ENV \ --location AIRFLOW_1_LOCATION \ connections -- --list
Pour créer une connexion dans votre environnement Airflow 2, exécutez la Commande
connections
de la CLI Airflow via gcloud. Exemple :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
Pour afficher la liste des utilisateurs dans l'environnement Airflow 1.10*, procédez comme suit :
Ouvrez l'interface Web Airflow pour votre environnement Airflow 1.10.*.
Accédez à Admin > Utilisateurs.
Pour créer un compte utilisateur dans votre environnement Airflow 2, exécutez la Commande
users create
de la CLI Airflow via gcloud. Exemple :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
Étape 7 : Assurez-vous que vos DAG sont prêts pour Airflow 2
Avant de transférer des DAG vers votre environnement Airflow 2, assurez-vous que les conditions suivantes sont remplies :
Vos DAG s'exécutent correctement et il n'y a plus de problèmes de compatibilité.
Vos DAG utilisent des instructions d'importation correctes.
Par exemple, la nouvelle instruction d'importation pour
BigQueryCreateDataTransferOperator
peut se présenter comme suit :from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
Vos DAG sont mis à jour pour Airflow 2. Cette modification est compatible avec Airflow 1.10.14 et versions ultérieures.
Étape 8 : Transférez les DAG vers l'environnement Airflow 2
Les problèmes potentiels suivants peuvent se produire lorsque vous transférez des DAG entre les environnements :
Si un DAG est activé (non suspendu) dans les deux environnements, chaque environnement exécute sa propre copie du DAG, comme prévu. Cela peut entraîner des exécutions DAG simultanées pour les mêmes données et le même temps d'exécution.
En raison du rattrapement du DAG, Airflow planifie des exécutions DAG supplémentaires, à compter de la date de début spécifiée dans vos DAG. En effet, la nouvelle instance Airflow ne prend pas en compte l'historique des exécutions de DAG à partir de l'environnement 1.10.*. Cela peut entraîner un grand nombre d'exécutions DAG planifiées à compter de la date de début spécifiée.
Empêcher les exécutions DAG simultanées
Dans votre environnement Airflow 2, remplacez l'option de configuration Airflow dags_are_paused_at_creation
. Une fois la modification effectuée, tous les nouveaux DAG sont mis en pause par défaut.
Section | Clé | Valeur |
---|---|---|
core |
dags_are_paused_at_creation |
True |
Empêcher les exécutions supplémentaires ou manquantes des DAG
Spécifiez une nouvelle date de début statique dans les DAG que vous transférez vers votre environnement Airflow 2.
Pour éviter les écarts et les chevauchements de dates d'exécution, la première exécution du DAG doit se produire dans l'environnement Airflow 2 à la prochaine occurrence de l'intervalle de planification. Pour ce faire, définissez la nouvelle date de début dans votre DAG sur une date antérieure à la dernière exécution dans l'environnement Airflow 1.10.*.
Par exemple, si votre DAG s'exécute à 15h00, 17h00 et 21h00 chaque jour dans l'environnement Airflow 1.10*, que le dernier DAG a été exécuté à 15h00 et que vous prévoyez de transférer le DAG à 15h15, la date de début de l'environnement Airflow 2 peut être aujourd'hui à 14h45. Une fois le DAG activé dans l'environnement Airflow 2, Airflow planifie une exécution du DAG à 17h00.
Autre exemple : si votre DAG s'exécute chaque jour à 00h00 dans l'environnement Airflow 1.10*, que le dernier DAG a été exécuté le 26 avril 2021 à 00h00 et que vous envisagez de transférer le DAG à 13h00 le 26 avril 2021, la date de début de l'environnement Airflow 2 peut être 23h45 le 25 avril 2021. Une fois le DAG activé dans l'environnement Airflow 2, Airflow planifie une exécution du DAG pour 00h00 le 27 avril 2021.
Transférez vos DAG un par un vers l'environnement Airflow 2
Pour chaque DAG, suivez la procédure suivante pour le transférer :
Assurez-vous que la nouvelle date de début dans le DAG est définie comme décrit dans la section précédente.
Importez le DAG mis à jour dans l'environnement Airflow 2. Ce DAG est mis en pause dans l'environnement Airflow 2 en raison du remplacement de la configuration, donc aucune exécution du DAG n'est encore planifiée.
Dans l'interface Web Airflow, accédez aux DAG et recherchez les erreurs de syntaxe des DAG signalés.
Au moment où vous prévoyez de transférer le DAG :
Suspendez le DAG dans votre environnement Airflow 1.10.*.
Réactivez le DAG dans votre environnement Airflow 2.
Vérifiez que la nouvelle exécution du DAG est planifiée au bon moment.
Attendez que l'exécution du DAG se produise dans l'environnement Airflow 2 et vérifiez si l'exécution réussit.
Selon que l'exécution du DAG réussit ou non, procédez comme suit :
Si l'exécution du DAG réussit, vous pouvez continuer et utiliser le DAG à partir de votre environnement Airflow 2. Enfin, envisagez de supprimer la version Airflow 1.10.* du DAG.
Si l'exécution du DAG échoue, essayez de résoudre les problèmes liés au DAG jusqu'à ce qu'il aboutisse dans Airflow 2.
Si nécessaire, vous pouvez toujours revenir à la version Airflow 1.10.* du DAG :
Suspendez le DAG dans votre environnement Airflow 2.
Relancez le DAG dans votre environnement Airflow 1.10.*. Cela planifie une nouvelle exécution du DAG pour la même date et la même heure que l'exécution du DAG qui a échoué.
Lorsque vous êtes prêt à continuer avec la version Airflow 2 du DAG, ajustez la date de début, importez la nouvelle version du DAG dans votre environnement Airflow 2, puis répétez la procédure.
Étape 9 : Surveiller votre environnement Airflow 2
Une fois que vous avez transféré tous les DAG et la configuration vers l'environnement Airflow 2, surveillez-les pour détecter les problèmes potentiels, les exécutions de DAG ayant échoué et l'état général de l'environnement. Si l'environnement Airflow 2 ne présente aucun problème pendant une période suffisante, vous pouvez supprimer l'environnement Airflow 1.10.*.
Étape suivante
- Découvrez comment résoudre les problèmes liés aux DAG.
- Résoudre les problèmes de création d'environnement
- Résoudre les problèmes liés aux mises à jour de l'environnement
- Utiliser des packages de rétroportage