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.
S3 StreamingFileSink FileNotFoundExceptions
Les applications de service géré pour Apache Flink peuvent rencontrer une erreur FileNotFoundException
de fichier partiels En cours lors du démarrage à partir d’instantanés si un fichier partiel En cours référencé par son point de sauvegarde est manquant. Lorsque ce mode d’échec se produit, l’état d’opérateur de l’application de service géré pour Apache Flink est généralement irrécupérable et doit être redémarré sans instantané, en utilisant SKIP_RESTORE_FROM_SNAPSHOT
. Consultez l’exemple de trace de pile suivant :
java.io.FileNotFoundException: No such file or directory: s3://your-amzn-s3-demo-bucket/pathj/INSERT/2023/4/19/7/_part-2-1234_tmp_12345678-1234-1234-1234-123456789012 at org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:2231) at org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:2149) at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:2088) at org.apache.hadoop.fs.s3a.S3AFileSystem.open(S3AFileSystem.java:699) at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:950) at org.apache.flink.fs.s3hadoop.HadoopS3AccessHelper.getObject(HadoopS3AccessHelper.java:98) at org.apache.flink.fs.s3.common.writer.S3RecoverableMultipartUploadFactory.recoverInProgressPart(S3RecoverableMultipartUploadFactory.java:97) ...
Flink StreamingFileSink
écrit des enregistrements dans les systèmes de fichiers pris en charge par les systèmes de fichiers.
Lors de la création de points de contrôle et de points de sauvegarde (création d’instantané), tous les fichiers en attente sont renommés et validés. Cependant, les fichiers partiels En cours ne sont pas validés, mais sont renommés, et leur référence est conservée dans les métadonnées du point de contrôle ou du point de sauvegarde à utiliser lors de la restauration des tâches. Ces fichiers partiels En cours finiront par passer à l’état En suspens, puis seront renommés et validés à un point de contrôle ou de sauvegarde ultérieur.
Voici les causes premières et les mesures à prendre pour les fichiers partiels En cours manquants :
Instantané périmé utilisé pour démarrer l'application Managed Service for Apache Flink : seul le dernier instantané du système pris lors de l'arrêt ou de la mise à jour d'une application peut être utilisé pour démarrer une application Managed Service for Apache Flink avec Amazon S3. StreamingFileSink Pour éviter ce type d’échec, utilisez le dernier instantané du système.
Cela se produit par exemple lorsque vous choisissez un instantané créé à l’aide de
CreateSnapshot
au lieu d’un instantané déclenché par le système lors d’un arrêt ou d’une mise à jour. Le point de sauvegarde de l'ancien instantané conserve une out-of-date référence au fichier de pièce en cours qui a été renommé et validé par le point de contrôle ou le point de sauvegarde suivant.Cela peut également se produire lorsqu’un instantané déclenché par le système à la suite d’un événement d’arrêt/de mise à jour non récent est sélectionné. Par exemple, une application dont la capture d’instantané par le système est désactivée, mais où l’option
RESTORE_FROM_LATEST_SNAPSHOT
est configurée. En règle générale, le service géré pour les applications Apache Flink avec Amazon S3 StreamingFileSink doit toujours avoir la capture instantanée du système activée etRESTORE_FROM_LATEST_SNAPSHOT
configurée.
Fichier partiel En cours supprimé : comme le fichier partiel En cours se trouve dans un compartiment S3, il peut être supprimé par d’autres composants ou acteurs ayant accès au compartiment.
Cela peut se produire lorsque vous avez arrêté votre application trop longtemps et que le fichier de partie en cours référencé par le point de sauvegarde de votre application a été supprimé conformément à la politique de MultiPartUpload cycle de vie des compartiments S3. Pour éviter ce type de défaillance, assurez-vous que votre politique de MPU cycle de vie des compartiments S3 couvre une période suffisamment longue pour votre cas d'utilisation.
Cela peut également se produire lorsque le fichier partiel En cours a été supprimé manuellement ou par un autre composant de votre système. Pour éviter ce type d’échec, assurez-vous que les fichiers partiels En cours ne sont pas supprimés par d’autres acteurs ou composants.
Condition de course dans laquelle un point de contrôle automatique est déclenché après le point de sauvegarde : cela affecte les versions du service géré pour Apache Flink jusqu’à la version 1.13 incluse. Ce problème est résolu dans le service géré pour Apache Flink version 1.15. Migrez votre application vers la dernière version de Managed Service for Apache Flink afin d'éviter que cela ne se reproduise. Nous vous suggérons également de migrer de StreamingFileSink vers. FileSink
Lorsque des applications sont arrêtées ou mises à jour, le service géré pour Apache Flink déclenche un point de sauvegarde et arrête l’application en deux étapes. Si un point de contrôle automatique se déclenche entre les deux étapes, le point de sauvegarde sera inutilisable, car son fichier partiel En cours sera renommé et potentiellement validé.