View a markdown version of this page

Mise à niveau vers Flink 2.2 : guide complet - Service géré pour Apache Flink

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise à niveau vers Flink 2.2 : guide complet

Ce guide fournit des instructions détaillées pour mettre à niveau votre application Amazon Managed Service pour Apache Flink de Flink 1.x à Flink 2.2. Il s'agit d'une mise à niveau majeure de la version avec des modifications majeures qui nécessitent une planification et des tests minutieux.

La mise à niveau de la version majeure est unidirectionnelle

L'opération de mise à niveau peut déplacer votre application de Flink 1.x vers la version 2.2 avec préservation de l'état, mais vous ne pouvez pas revenir de la version 2.2 à la version 1.x avec l'état 2.2. Si votre application ne fonctionne plus après la mise à niveau, utilisez l'API Rollback pour revenir à la version 1.x avec votre état 1.x d'origine à partir du dernier instantané.

Conditions préalables

Avant de commencer votre mise à niveau :

Comprendre vos parcours de migration

Votre expérience de mise à niveau dépend de la compatibilité de votre application avec Flink 2.2. La compréhension de ces trajectoires vous aide à vous préparer de manière appropriée et à définir des attentes réalistes.

Chemin 1 : état du binaire et de l'application compatibles

À quoi s'attendre :

  • Invoquer l'opération de mise à niveau

  • Terminez la migration vers la version 2.2 avec le changement de statut de l'application : RUNNING → → UPDATING RUNNING

  • Préservez l'état de l'ensemble des applications sans perte de données ni retraitement

  • Même expérience que les migrations de versions mineures

Idéal pour : les applications sans état ou les applications utilisant une sérialisation compatible (Avro, schémas Protobuf compatibles, POJO sans collections)

Voie 2 : Incompatibilités binaires

À quoi s'attendre :

  • Invoquer l'opération de mise à niveau

  • L'opération échoue et révèle l'incompatibilité binaire via l'API Operations et les journaux

  • Lorsque la restauration automatique est activée : les applications sont automatiquement restaurées en quelques minutes sans votre intervention

  • Lorsque la restauration automatique est désactivée : les applications restent en cours d'exécution sans traitement des données ; vous revenez manuellement à l'ancienne version

  • Une fois le binaire corrigé, utilisez l'UpdateApplication API pour une expérience similaire à Path 1

Idéal pour : les applications utilisant des API supprimées détectées lors du démarrage de la tâche Flink

Chemin 3 : État de l'application incompatible

À quoi s'attendre :

  • Invoquer l'opération de mise à niveau

  • La migration semble réussir dans un premier temps

  • Les applications entrent dans des boucles de redémarrage en quelques secondes lorsque la restauration de l'état échoue

  • Détectez les défaillances grâce à CloudWatch des métriques montrant des redémarrages continus

  • Invoquer manuellement l'opération Rollback

  • Revenir à la production quelques minutes après le lancement de la restauration

  • Révision Migration d'État de votre candidature

Idéal pour : les applications présentant des incompatibilités de sérialisation d'états (POJO avec collections, certains états) Kryo-serialized

Note

Il est vivement recommandé de créer une réplique de votre application de production et de tester chacune des phases suivantes de la mise à niveau sur la réplique avant de suivre les mêmes étapes pour votre application de production.

Phase 1 : Préparation

Mettre à jour le code d'application

Mettez à jour le code de votre application pour qu'elle soit compatible avec Flink 2.2 :

  • Mettez à jour les dépendances de Flink vers la version 2.2.1 dans votre ou pom.xml build.gradle

  • Mettez à jour les dépendances des connecteurs vers des versions compatibles avec Flink 2.2 (voir) Disponibilité des connecteurs

  • Supprimer l'utilisation obsolète de l'API :

    • Remplacer DataSet l'API par une DataStream API ou une table API/SQL

    • Remplacez les anciennes APISourceFunction/SinkFunctionpar des API FLIP-27 Source et FLIP-143 Sink

    • Remplacer l'utilisation de l'API Scala par l'API Java

  • Mise à jour vers Java 17

Téléchargez le code d'application mis à jour

  • Créez le JAR de votre application avec les dépendances de Flink 2.2

  • Téléchargez sur Amazon S3 avec un nom de fichier différent de celui de votre fichier JAR actuel (par exemple,my-app-flink-2.2.jar)

  • Notez le compartiment et la clé S3 à utiliser lors de l'étape de mise à niveau

Phase 2 : activer la restauration automatique

Auto-rollback permet à Amazon Managed Service pour Apache Flink de revenir automatiquement à la version précédente en cas d'échec de la mise à niveau.

Vérifier l'état de restauration automatique

Console de gestion AWS:

  1. Accédez à votre application

  2. Choisissez la configuration

  3. Dans les paramètres de l'application, vérifiez que la restauration du système est activée

AWS CLI:

aws kinesisanalyticsv2 describe-application \ --application-name MyApplication \ --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'

Activer la restauration automatique (si elle n'est pas activée)

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --application-configuration-update '{ "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": true } }'

Phase 3 : Prendre un instantané (facultatif)

Si les instantanés automatiques sont activés pour votre application, vous pouvez ignorer cette étape, sinon prenez un instantané de votre application pour enregistrer l'état de votre application avant la mise à niveau.

Prendre un instantané de l'application en cours d'exécution

Console de gestion AWS:

  1. Accédez à votre application

  2. Choisissez des instantanés

  3. Choisissez Créer un instantané

  4. Entrez un nom de capture d'écran (par exemple,pre-flink-2.2-upgrade)

  5. Sélectionnez Create (Créer).

AWS CLI:

aws kinesisanalyticsv2 create-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Vérifier la création d'un instantané

aws kinesisanalyticsv2 describe-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Attendez jusqu'à ce que ce SnapshotStatus soit READY le cas avant de continuer.

Phase 4 : mise à niveau de l'application

Vous pouvez mettre à niveau votre application Flink en utilisant cette UpdateApplication action.

Vous pouvez appeler l'UpdateApplicationAPI de différentes manières :

  • Utilisez le Console de gestion AWS.

    • Accédez à la page de votre application sur le Console de gestion AWS.

    • Choisissez Configurer.

    • Sélectionnez le nouveau moteur d'exécution et le snapshot à partir duquel vous souhaitez démarrer, également connu sous le nom de restauration de la configuration. Utilisez le dernier paramètre comme configuration de restauration pour démarrer l'application à partir du dernier instantané. Pointez sur la nouvelle application mise à niveau JAR/zip sur Amazon S3.

  • Utilisez l' AWS CLIupdate-applicationaction.

  • Utiliser CloudFormation.

    • Mettez à jour le RuntimeEnvironment champ. Auparavant, vous avez CloudFormation supprimé l'application et en avez créé une nouvelle, ce qui a entraîné la perte de vos instantanés et de l'historique des autres applications. Met désormais CloudFormation à jour votre RuntimeEnvironment application et ne supprime pas votre application.

  • Utilisez le AWS SDK.

    • Consultez la documentation du SDK pour le langage de programmation de votre choix. Consultez UpdateApplication.

Vous pouvez effectuer la mise à niveau pendant que l'application est RUNNING en cours d'exécution ou lorsque l'application est READY arrêtée. Amazon Managed Service pour Apache Flink valide la compatibilité entre la version d'exécution d'origine et la version d'exécution cible. Ce contrôle de compatibilité s'exécute lorsque vous effectuez une mise à niveau UpdateApplication alors que vous êtes en RUNNING état ou à la suivante StartApplication si vous effectuez une mise à niveau alors qu'il est en READY état.

Passer de l'état RUNNING

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Mise à niveau depuis l'état READY

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Phase 5 : mise à niveau du moniteur

Contrôle de compatibilité

  • Utilisez l'API Operations pour vérifier l'état de la mise à niveau. En cas d'incompatibilités binaires ou de problèmes lors du démarrage de la tâche, l'opération de mise à niveau échouera avec les journaux.

  • Si l'opération de mise à niveau a réussi mais que l'application est bloquée dans des boucles de redémarrage, cela signifie que l'état est incompatible avec la nouvelle version de Flink ou qu'il y a un problème avec le code mis à jour. Découvrez Guide de compatibilité d'état pour les mises à niveau de Flink 2.2 comment identifier les problèmes d'incompatibilité entre États.

Surveiller l'état des applications

État de la demande :

  • Le statut de la candidature devrait changer : RUNNINGUPDATINGRUNNING

  • Vérifiez le temps d'exécution de l'application. S'il s'agit de la version 2.2, l'opération de mise à niveau a réussi.

  • Si votre application est active RUNNING mais qu'elle utilise toujours l'ancien environnement d'exécution, la restauration automatique s'est déclenchée. L'API Operations affichera le fonctionnement sous la formeFAILED. Consultez les journaux pour trouver l'exception en cas d'échec.

En outre, surveillez ces indicateurs dans les domaines CloudWatch suivants :

Métrique de redémarrage :

  • numRestarts: Surveillez les redémarrages inattendus : la mise à niveau est réussie si elle numRestarts est nulle uptime et/ou runningTime si elle augmente.

Métriques des points de contrôle :

  • lastCheckpointDuration: Doit être similaire aux valeurs antérieures à la mise à niveau

  • numberOfFailedCheckpoints: Doit rester à 0

Phase 6 : Valider le comportement de l'application

Une fois l'application exécutée sur Flink 2.2 :

Validation fonctionnelle

  • Vérifiez que les données sont lues à partir des sources

  • Vérifiez que les données sont écrites dans les cuves

  • Vérifiez que la logique métier produit les résultats attendus

  • Comparez la sortie avec la référence d'avant la mise à niveau

Validation des performances

  • Surveillez les mesures de latence (temps de traitement de bout en bout)

  • Surveillez les mesures de débit (enregistrements par seconde)

  • Surveillez la durée et la taille des points de contrôle

  • Surveillez l'utilisation de la mémoire et du processeur

Courez pendant plus de 24 heures

Autorisez l'application à s'exécuter pendant au moins 24 heures en production pour garantir :

  • Aucune fuite de mémoire

  • Comportement stable aux points de contrôle

  • Pas de redémarrages inattendus

  • Débit constant

Phase 7 : Procédures de restauration

Si la mise à niveau échoue ou si l'application est en cours d'exécution mais ne fonctionne pas correctement, revenez à la version précédente.

Annulation automatique

Si la restauration automatique est activée et que la mise à niveau échoue au démarrage, Amazon Managed Service pour Apache Flink revient automatiquement à la version précédente.

Annulation manuelle

Si l'application est en cours d'exécution mais qu'elle ne fonctionne pas correctement, utilisez l'RollbackApplicationAPI :

Console de gestion AWS:

  1. Accédez à votre application

  2. Choisissez Actions → Revenir en arrière

  3. Confirmez le rollback

AWS CLI:

aws kinesisanalyticsv2 rollback-application \ --application-name MyApplication \ --current-application-version-id <version-id>

Que se passe-t-il lors de la restauration :

  • L'application s'arrête

  • Runtime revient à la version précédente de Flink

  • Le code de l'application revient au fichier JAR précédent

  • L'application redémarre à partir de la dernière capture d'écran réussie prise avant la mise à niveau

Important
  • Vous ne pouvez pas restaurer un snapshot de Flink 2.2 sur Flink 1.x

  • La restauration utilise la capture d'écran prise avant la mise à niveau

  • Prenez toujours un instantané avant la mise à niveau (phase 3)

Étapes suivantes

Pour toute question ou problème lors de la mise à niveau, consultez le Résoudre les problèmes liés au service géré pour Apache Flink ou contactez le AWS support.