Le service géré Amazon pour Apache Flink était auparavant connu sous le nom d’Amazon Kinesis Data Analytics 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.
Gérez les sauvegardes d'applications à l'aide de snapshots
Un instantané est l’implémentation d’un point de sauvegarde Apache Flink par le service géré pour Apache Flink. Un instantané est une sauvegarde de l’état de l’application déclenchée, créée et gérée par un utilisateur ou un service. Pour plus d'informations sur les points de sauvegarde d'Apache Flink, consultez la section Points de sauvegarde de la documentation
Note
Nous recommandons que votre application crée un instantané plusieurs fois par jour pour redémarrer correctement avec des données d’état correctes. La fréquence correcte pour vos instantanés dépend de la logique métier de votre application. La prise de snapshots fréquents vous permet de récupérer des données plus récentes, mais cela augmente les coûts et nécessite davantage de ressources système.
Dans Managed Service for Apache Flink, vous gérez les instantanés à l'aide des actions suivantes : API
Pour connaître la limite du nombre d’instantanés par application, consultez Service géré pour Apache Flink et quota de blocs-notes Studio. Si votre application atteint la limite d’intantanés, la création manuelle d’un instantané échoue avec une LimitExceededException
.
Le service géré pour Apache Flink ne supprime jamais les instantanés. Vous devez supprimer les instantanés manuellement à l’aide de l’action DeleteApplicationSnapshot
.
Pour charger un instantané enregistré de l’état de l’application lors du démarrage d’une application, utilisez le paramètre ApplicationRestoreConfiguration
de l’action StartApplication
ou UpdateApplication
.
Cette rubrique contient les sections suivantes :
Gérez la création automatique de snapshots
Si SnapshotsEnabled
ce paramètre est défini sur ApplicationSnapshotConfigurationpour l'application, Managed Service for Apache Flink crée et utilise automatiquement des instantanés lorsque l'application est mise à jour, redimensionnée ou arrêtée afin de fournir une sémantique de traitement unique. true
Note
La définition de ApplicationSnapshotConfiguration::SnapshotsEnabled
sur false
entraînera une perte de données lors des mises à jour de l’application.
Note
Le service géré pour Apache Flink déclenche des points de sauvegarde intermédiaires lors de la création automatique d’instantanés. Pour la version 1.15 ou ultérieure de Flink, les points de sauvegarde intermédiaires ne provoquent plus d’effets secondaires. Voir Déclenchement de points de sauvegarde.
Les instantanés créés automatiquement présentent les qualités suivantes :
-
L'instantané est géré par le service, mais vous pouvez le voir à l'aide de l' ListApplicationSnapshotsaction. Les instantanés créés automatiquement sont pris en compte dans votre limite d’instantanés.
-
Si votre application dépasse la limite d’instantanés, les instantanés créés manuellement échoueront, mais le service géré pour Apache Flink créera toujours des instantanés lorsque l’application sera mise à jour, mise à l’échelle ou arrêtée. Vous devez supprimer manuellement les instantanés à l'aide de cette DeleteApplicationSnapshotaction avant de créer d'autres instantanés manuellement.
Restaurer à partir d'un instantané contenant des données d'état incompatibles
Les instantanés contenant des informations sur les opérateurs, la restauration des données d’état à partir d’un instantané d’un opérateur qui a changé depuis la version précédente de l’application peut avoir des résultats inattendus. Une application rencontrera un échec si elle tente de restaurer les données d’état à partir d’un instantané qui ne correspond pas à l’opérateur actuel. De plus, l’application sera bloquée à l’état STOPPING
ou UPDATING
.
Pour autoriser une application à effectuer une restauration à partir d'un instantané contenant des données d'état incompatibles, définissez le AllowNonRestoredState
paramètre de FlinkRunConfigurationà à à l'true
aide de l'UpdateApplicationaction.
Vous constaterez le comportement suivant lorsqu’une application est restaurée à partir d’un instantané obsolète :
Opérateur ajouté : si un nouvel opérateur est ajouté, le point de sauvegarde ne contient aucune donnée d’état pour le nouvel opérateur. Aucun défaut ne se produira et il n’est pas nécessaire de définir
AllowNonRestoredState
.Opérateur supprimé : si un opérateur existant est supprimé, le point de sauvegarde contient les données d’état de l’opérateur manquant. Une erreur se produira à moins que
AllowNonRestoredState
ne soit défini surtrue
.Modifié par l’opérateur : si des modifications compatibles sont apportées, telles que le remplacement du type d’un paramètre par un type compatible, l’application peut effectuer une restauration à partir de l’instantané obsolète. Pour plus d'informations sur la restauration à partir de snapshots, consultez la section Savepoints
dans la documentation d'Apache Flink. Une application qui utilise Apache Flink version 1.8 ou ultérieure peut éventuellement être restaurée à partir d’un instantané avec un schéma différent. Une application qui utilise Apache Flink version 1.6 ne peut pas être restaurée. Pour les two-phase-commit récepteurs, nous recommandons d'utiliser un instantané du système (SwS) au lieu d'un instantané créé par l'utilisateur (CreateApplicationSnapshot). Pour Flink, le service géré pour Apache Flink déclenche des points de sauvegarde intermédiaires lors de la création automatique d’instantanés. À partir de la version 1.15 de Flink, les points de sauvegarde intermédiaires ne provoquent plus d’effets secondaires. Consultez Triggering savepoints
.
Si vous devez reprendre une application incompatible avec les données de point de sauvegarde existantes, nous vous recommandons d'ignorer la restauration à partir de l'instantané en définissant le ApplicationRestoreType
paramètre de l'StartApplicationaction sur. SKIP_RESTORE_FROM_SNAPSHOT
Pour plus d’informations sur la façon dont Apache Flink gère les données d’état incompatibles, consultez State Schema Evolution
Consultez des API exemples d'instantanés
Cette section inclut des exemples de demandes d'APIactions pour utiliser des instantanés avec une application. Pour plus d'informations sur l'utilisation d'un JSON fichier en tant que saisie pour une API action, consultezAPIExemple de code de service géré pour Apache Flink.
Activer les instantanés pour une application
L’exemple de demande suivant pour l’action UpdateApplication
active les instantanés pour une application :
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }
Créer un instantané
L’exemple de code de demande suivant pour l’action CreateApplicationSnapshot
crée un instantané de l’état actuel de l’application :
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Répertorier les instantanés d'une application
L’exemple de code de demande suivant pour l’action ListApplicationSnapshots
répertorie les 50 premiers instantanés de l’état actuel de l’application :
{ "ApplicationName": "MyApplication", "Limit": 50 }
Afficher les détails d'un instantané d'application
L’exemple de demande suivant pour l’action DescribeApplicationSnapshot
répertorie les informations spécifiques à un instantané d’application :
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Suppression d’un instantané
L’exemple de demande d’action DeleteApplicationSnapshot
suivant supprime un instantané précédemment enregistré. Vous pouvez obtenir la valeur SnapshotCreationTimestamp
en utilisant ListApplicationSnapshots
ou DeleteApplicationSnapshot
:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }
Redémarrer une application à l'aide d'un instantané nommé
L’exemple de demande d’action StartApplication
suivant démarre l’application en utilisant l’état enregistré à partir d’un instantané spécifique :
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }
Redémarrer une application à l'aide de l'instantané le plus récent
L’exemple de demande d’action StartApplication
suivant démarre l’application en utilisant l’instantané le plus récent :
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Redémarrer une application sans capture instantanée
L’exemple de demande d’action StartApplication
suivant démarre l’application sans charger l’état de l’application, même si un instantané est présent :
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }