Amazon Managed Service pour Apache Flink 2.2 - 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.

Amazon Managed Service pour Apache Flink 2.2

Amazon Managed Service pour Apache Flink prend désormais en charge la version 2.2 d'Apache Flink. Il s'agit de la première mise à niveau majeure de version du service. Cette page couvre les fonctionnalités introduites dans Flink 2.2, ainsi que les points importants à prendre en compte pour la mise à niveau depuis Flink 1.x.

Note

Flink 2.2 introduit des modifications majeures qui nécessitent une planification minutieuse. Consultez la liste complète des modifications et des dépréciations les plus importantes ci-dessous, ainsi que la liste Guide de compatibilité d'état pour les mises à niveau de Flink 2.2 préalable à la mise à niveau depuis la version 1.x.

Amazon Managed Service pour Apache Flink 2.2 introduit des changements de comportement susceptibles de perturber les applications existantes lors de la mise à niveau. Passez en revue attentivement ces modifications ainsi que les modifications apportées à l'API Flink dans la section suivante.

Gestion de la configuration programmatique

  • MSF Flink 2.2 signale désormais une exception lorsque les clients tentent de modifier des configurations qui ne sont pas prises en charge par MSF ou par un système similaire. env.getConfig().set() APIs Consultez Propriétés de configuration programmatique de Flink.

  • Les clients peuvent toujours demander à modifier certaines configurations par le biais de tickets d'assistance (voir Paramètres modifiables)

Suppression des métriques

  • La fullRestarts métrique a été supprimée dans Flink 2.2. Utilisez plutôt la numRestarts métrique.

  • La bytesRequestedPerFetch métrique du connecteur KDS a été supprimée dans la version 6.0.0 AWS du connecteur Flink (seule la version du connecteur est compatible avec Flink 2.2).

  • Les downtime métriques uptime et sont toutes deux marquées comme obsolètes dans Flink 2.2 et seront bientôt supprimées. Remplacez uptime par la nouvelle métriquerunningTime. downtimeRemplacez-le par un ou plusieurs des éléments restartingTime suivants :cancellingTime, etfailingTime.

  • Consultez la page Mesures et dimensions pour obtenir la liste complète des mesures prises en charge.

Appels IMDS non authentifiants bloqués

  • Ces points de terminaison autorisés sont utilisés par les AWS SDK DefaultCredentialsProvider(/latest/meta-data/iam/security-credentials/) et DefaultAwsRegionProviderChain(/latest/dynamic/instance-identity/document) pour configurer automatiquement les informations d'identification et la région de votre application.

  • Les applications utilisant les fonctions du SDK AWS qui reposent sur des appels IMDS non authentifiants (tels queEC2MetadataUtils.getInstanceId(), EC2MetadataUtils.getInstanceType()EC2MetadataUtils.getLocalHostName(), ouEC2MetadataUtils.getAvailabilityZone()) recevront des erreurs HTTP 4xx lors de la tentative de ces appels.

  • Si votre application utilise par exemple des métadonnées IMDS ou d'autres informations en dehors des chemins autorisés, refactorisez votre code pour utiliser plutôt des variables d'environnement ou la configuration de l'application.

Système de fichiers racine en lecture seule

  • Pour améliorer la sécurité, toute dépendance en dehors de /tmp laquelle se trouve le répertoire de travail Flink par défaut se traduira par :java.io.FileNotFoundException: /{path}/{filename} (Read-only file system).

  • Les dépendances du système de fichiers peuvent provenir directement de votre code ou indirectement des bibliothèques incluses dans vos dépendances. Remplacez les dépendances directes du système de fichiers /tmp/ dans votre code. Pour les dépendances indirectes du système de fichiers par rapport aux bibliothèques, utilisez les remplacements de configuration des bibliothèques pour rediriger les opérations du système de fichiers vers. /tmp/

Vous trouverez ci-dessous un résumé des modifications majeures et des dépréciations introduites dans Managed Service for Apache Flink 2.2. Consultez les notes de mise à jour d'Apache Flink 2.0 pour les notes de mise à jour complètes d'Apache Flink 2.0 présentant ces modifications majeures.

API Flink et suppression de langues

DataSet API supprimée

  • L'ancienne DataSet API pour le traitement par lots a été complètement supprimée dans Flink 2.0+. Tous les traitements par lots doivent désormais utiliser l' DataStream API unifiée.

  • Les applications utilisant l' DataSet API doivent être migrées vers l' DataStream API avant la mise à niveau. Consultez le guide de migration d'Apache Flink DataSet pour la conversion DataStream

Java 11 et Python 3.8 supprimés

  • Le support de Java 11 a été complètement supprimé ; Java 17 est le runtime par défaut et recommandé.

  • Le support de Python 3.8 a été supprimé ; Python 3.12 est désormais la version par défaut.

Classes de connecteurs héritées supprimées

  • L'ancienne version SourceFunction et les SinkFunction interfaces ont été remplacées par les nouvelles versions unifiées Source (FLIP-27) et Sink (FLIP-143) APIs, qui offrent une meilleure prise en charge de la bounded/unbounded dualité, une meilleure coordination des points de contrôle et un modèle de programmation plus épuré.

  • Pour Kinesis Data Streams, KinesisStreamsSource utilisez KinesisStreamsSink et flink-connector-aws-kinesis-streams:6.0.0-2.0 depuis.

API Scala supprimée

  • L'API Flink Scala a été supprimée. L'API Java de Flink est désormais la seule API prise en charge pour les applications basées sur JVM.

  • Si votre application est écrite en Scala, vous pouvez toujours utiliser l'API Java de Flink à partir du code Scala. Le principal changement est que les wrappers et les conversions implicites spécifiques à Scala ne sont plus disponibles. Consultez la section Mise à niveau des applications et des versions de Flink pour plus de détails sur la mise à jour de vos applications Scala.

Considérations relatives à la compatibilité des

  • La mise à niveau du sérialiseur Kryo de la version 2.24 à la version 5.6 peut entraîner des problèmes de compatibilité d'état.

  • POJOs avec des collections (HashMap,ArrayList,HashSet) peut avoir des problèmes de compatibilité entre les états.

  • La sérialisation d'Avro et Protobuf n'est pas affectée.

  • Consultez Guide de compatibilité d'état pour les mises à niveau de Flink 2.2 pour une évaluation détaillée afin de trier le niveau de risque de votre application.

Support d'exécution et de langage

Fonctionnalité Description Documentation
Exécution Java 17 Java 17 est désormais l'environnement d'exécution par défaut et recommandé ; le support de Java 11 a été supprimé. Compatibilité avec Java
Support de Python 3.12 Python 3.12 est désormais pris en charge ; le support de Python 3.8 a été supprimé. PyFlink Documentation

Gestion de l'État et performance

Fonctionnalité Description Documentation
RockSDB 8.10.0 I/O Performances améliorées grâce à la mise à niveau de RockSDB. Backends d'État
Améliorations de la sérialisation Sérialiseurs dédiés pour Map, List, Set ; Kryo est passé de la version 2.24 à la version 5.6. Type de sérialisation

Fonctionnalités de l'API SQL et de l'API Table

Fonctionnalité Description Documentation
Type de données VARIANT Support natif pour les données semi-structurées (JSON) sans analyse répétée de chaînes. Types de données
Rejoignez Delta Réduit les exigences d'état pour les jointures en streaming en ne conservant que la dernière version de chaque clé ; nécessite une infrastructure gérée par le client (par exemple, Apache Fluss). Jointures
StreamingMultiJoinOperator Exécute les jointures multidirectionnelles en tant qu'opérateur unique, éliminant ainsi la matérialisation intermédiaire. FLIP-516
ProcessTableFunction (PTF) Active une logique dynamique pilotée par les événements directement dans SQL avec un état par clé et des temporisateurs. Fonctions définies par l'utilisateur
Fonction ML_PREDICT Appelez des modèles ML enregistrés sur streaming/batch des tables directement depuis SQL. Demande au client de regrouper une ModelProvider implémentation (par exemple,flink-model-openai). ModelProvider les bibliothèques ne sont pas fournies par le service géré pour Apache Flink. Prédiction ML
Modèle DDL Définissez les modèles ML en tant qu'objets de catalogue de première classe à l'aide des instructions CREATE MODEL. CRÉEZ des déclarations
Recherche vectorielle L'API Flink SQL prend en charge la recherche dans les bases de données vectorielles. Aucune VectorSearchTableSource implémentation open source n'est actuellement disponible ; les clients doivent fournir leur propre implémentation. Flink SQL

DataStream Fonctionnalités de l'API

Fonctionnalité Description Documentation
API source FLIP-27 Nouvelle interface source unifiée qui remplace l'ancienne SourceFunction. Sources
API d'évier FLIP-143 Nouvelle interface de réception unifiée qui remplace l'ancienne SinkFunction. Éviers
Python asynchrone DataStream I/O Opérations non bloquantes dans DataStream l'API Python utilisant AsyncFunction. E/S asynchrones

Lors de la mise à niveau vers Flink 2.2, vous devez également mettre à jour les dépendances de votre connecteur vers des versions compatibles avec le runtime Flink 2.2. Les connecteurs Flink sont publiés indépendamment du moteur d'exécution Flink, et tous les connecteurs ne disposent pas encore d'une version compatible avec Flink 2.2. Le tableau suivant récapitule la disponibilité des connecteurs couramment utilisés dans Amazon Managed Service pour Apache Flink :

Disponibilité du connecteur pour Flink 2.2
Connecteur Version 1.20 de Flink Version 2.0 ou ultérieure de Flink Remarques
Apache Kafka flink-connector-kafka 3,4,0-1,20 flink-connector-kafka 4,0,0-2,0 Recommandé pour Flink 2.2
Kinesis Data Streams (source) flink-connector-kinesis 5,0,0-1,20 flink-connector-aws-kinesis-streams 6.0.0-2.0 Recommandé pour Flink 2.2
Kinesis Data Streams (récepteur) flink-connector-aws-kinesis-streams 5.1.0-1.20 flink-connector-aws-kinesis-streams 6.0.0-2.0 Recommandé pour Flink 2.2
Amazon Data Firehose flink-connector-aws-kinesis-tuyau à incendie 5.1.0-1.20 flink-connector-aws-kinesis-firehose 6.0.0-2.0 Compatible avec Flink 2.0
Amazon DynamoDB flink-connector-dynamodb 5,1,0 à 1,20 flink-connector-dynamodb 6,0,0-2,0 Compatible avec Flink 2.0
Amazon SQS flink-connector-sqs 5,1,0 à 1,20 flink-connector-sqs 6,0,0-2,0 Compatible avec Flink 2.0
FileSystem (S3, HDFS) Fourni avec Flink Fourni avec Flink Intégré à la distribution Flink — toujours disponible
JDBC flink-connector-jdbc 3,3,0-1,20 Pas encore sorti pour 2.x Aucune version compatible avec Flink 2.x n'est disponible
OpenSearch flink-connector-opensearch 1,2,0-1,19 Pas encore sorti pour 2.x Aucune version compatible avec Flink 2.x n'est disponible
Elasticsearch Connecteur Legacy uniquement Pas encore sorti pour 2.x Envisagez de migrer vers le connecteur OpenSearch
Amazon Managed Service for Prometheus flink-connector-prometheus 1,0-1,20 Pas encore sorti pour 2.x Aucune version compatible avec Flink 2.x n'est disponible
  • Si votre application dépend d'un connecteur qui ne possède pas encore de version 2.x de Flink, deux options s'offrent à vous : attendre que le connecteur publie une version compatible ou évaluer si vous pouvez le remplacer par une autre version (par exemple, en utilisant le catalogue JDBC ou un récepteur personnalisé).

  • Lorsque vous mettez à jour des versions de connecteurs, faites attention aux changements de nom des artefacts : certains connecteurs ont été renommés entre les versions principales (par exemple, le connecteur Firehose est passé flink-connector-aws-kinesis-firehose de flink-connector-aws-firehose à dans certaines versions intermédiaires).

  • Consultez toujours la documentation du connecteur Amazon Managed Service for Apache Flink pour connaître les noms exacts des artefacts et les versions prises en charge dans votre environnement d'exécution cible.

Les fonctionnalités suivantes ne sont pas prises en charge dans Amazon Managed Service pour Apache Flink 2.2 :

  • Tables matérialisées : instantanés de table interrogeables et maintenus en permanence.

  • Modifications de télémétrie personnalisées : rapports métriques personnalisés et configurations de télémétrie.

  • ForSt State Backend : stockage d'état désagrégé (expérimental en open source).

  • Java 21 : support expérimental en open source, non pris en charge dans Managed Service pour Apache Flink.

Service géré Amazon pour Apache Flink Studio

Dans Amazon Managed Service pour Apache Flink, Flink 2.2 ne prend pas en charge les applications Studio. Pour plus d'informations, consultez la section Création d'un bloc-notes Studio.

Connecteur Kinesis EFO

  • Les applications utilisant le chemin KinesisStreamsSource with EFO (Enhanced Fan-Out/ SubscribeToShard) introduit dans les connecteurs v5.0.0 et v6.0.0 peuvent échouer lorsque les flux Kinesis sont repartagés. Il s'agit d'un problème connu au sein de la communauté. Pour plus d'informations, consultez FLINK-37648.

  • Les applications utilisant le chemin KinesisStreamsSource with EFO (Enhanced Fan-Out/ SubscribeToShard) introduit dans les connecteurs v5.0.0 et v6.0.0 KinesisStreamsSink peuvent être bloquées si l'application Flink est soumise à une contre-pression, ce qui entraîne l'arrêt complet du traitement des données dans une ou plusieurs applications. TaskManagers Une opération d'arrêt forcé et une opération de démarrage de l'application sont nécessaires pour récupérer l'application. Il s'agit d'un sous-cas du problème connu dans la communauté. Pour plus d'informations, consultez FLINK-34071.

Amazon Managed Service pour Apache Flink prend en charge les mises à niveau de version sur place qui préservent la configuration de votre application, les journaux, les métriques, les balises et, si l'état et les fichiers binaires sont compatibles, l'état de votre application. Pour step-by-step obtenir des instructions, voirMise à niveau vers Flink 2.2 : guide complet.

Pour obtenir des conseils sur l'évaluation des risques liés à la compatibilité des états et la gestion des états incompatibles lors des mises à niveau, consultezGuide de compatibilité d'état pour les mises à niveau de Flink 2.2.

Pour toute question ou problème, consultez le Support Résoudre les problèmes liés au service géré pour Apache Flink ou contactez le AWS Support.