View a markdown version of this page

S3 StreamingFileSink FileNotFoundExceptions - 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.

S3 StreamingFileSink FileNotFoundExceptions

Le service géré pour les applications Apache Flink peut s'exécuter dans un fichier In-progress partiel FileNotFoundException lors du démarrage à partir d'instantanés si un fichier de In-progress pièce 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://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. Étant donné que les flux entrants peuvent être illimités, les données sont organisées en fichiers partiels de taille limitée et de nouveaux fichiers sont ajoutés au fur et à mesure de l’écriture des données. Le cycle de vie des fichiers partiels et la politique de substitution déterminent le calendrier, la taille et le nom des fichiers partiels.

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 de In-progress pièces ne sont pas validés mais renommés et leur référence est conservée dans les métadonnées de point de contrôle ou de point de sauvegarde à utiliser lors de la restauration des tâches. Ces fichiers In-progress partiels finiront par passer à Pending, renommés et validés par un point de contrôle ou un point de sauvegarde ultérieur.

Voici les causes premières du fichier de In-progress pièce manquant et les mesures à prendre pour y remédier :

  • Instantané obsolète 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 référence obsolète au fichier de In-progress pièce 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 à partir d'un Stop/Update événement 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 et RESTORE_FROM_LATEST_SNAPSHOT configurée.

  • In-progress fichier de pièce supprimé : comme le fichier de In-progress pièce 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 In-progress pièce 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 panne, assurez-vous que la politique de cycle de vie MPU du compartiment S3 couvre une période suffisamment longue pour votre cas d’utilisation.

    • Cela peut également se produire lorsque le fichier de In-progress pièce a été supprimé manuellement ou par un autre composant de votre système. Pour éviter ce type d'échec, assurez-vous que les fichiers de In-progress pièces 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 In-progress partiel sera renommé et potentiellement validé.