Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
S3 StreamingFileSink FileNotFoundExceptions
Le applicazioni del servizio gestito per Apache Flink possono essere eseguite in un file delle parti in corso FileNotFoundException
quando si parte da snapshot se manca un file delle parti in corso a cui fa riferimento il relativo savepoint. Quando si verifica questa modalità di errore, lo stato dell'operatore dell'applicazione di servizio gestito per Apache Flink non è in genere ripristinabile e deve essere riavviato senza utilizzare uno snapshot SKIP_RESTORE_FROM_SNAPSHOT
. Vedi il seguente esempio di stack trace:
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
scrive i record su file system supportati dai File System.
Durante il checkpoint e il savepoint (cattura degli snapshot), tutti i file in sospeso vengono rinominati e salvati. Tuttavia, i file delle parti in corso non sono salvati, ma rinominati; il riferimento viene mantenuto nei metadati del checkpoint o del savepoint, in modo da poter essere utilizzato durante il ripristino dei processi. I file delle parti in corso verranno infine contrassegnati come in sospeso, rinominati e salvati da un checkpoint o savepoint successivi.
Di seguito sono riportate le cause principali e le misure di mitigazione nel caso in cui manchino i file delle parti in corso:
Istantanea obsoleta utilizzata per avviare l'applicazione Managed Service for Apache Flink: solo l'ultima istantanea del sistema scattata quando un'applicazione viene arrestata o aggiornata può essere utilizzata per avviare un'applicazione Managed Service for Apache Flink con Amazon S3. StreamingFileSink Per evitare questa classe di errori è consigliabile utilizzare lo snapshot di sistema più recente.
Ciò accade ad esempio quando si sceglie uno snapshot creato utilizzando
CreateSnapshot
invece di uno innescato dal sistema durante l'arresto o l'aggiornamento. Il punto di salvataggio della vecchia istantanea conserva un out-of-date riferimento al file di parte in corso che è stato rinominato e salvato dal checkpoint o dal punto di salvataggio successivo.Ciò può verificarsi anche quando viene selezionato uno snapshot innescato dal sistema da un evento Stop/Aggiorna che non sia il più recente. Un esempio è un'applicazione con lo snapshot del sistema disabilitato ma
RESTORE_FROM_LATEST_SNAPSHOT
configurato. In genere, le applicazioni Managed Service for Apache Flink con Amazon StreamingFileSink S3 devono sempre avere lo snapshot di sistema abilitato e configurato.RESTORE_FROM_LATEST_SNAPSHOT
File delle parti In corso rimosso: poiché il file delle parti In corso si trova in un bucket S3, può essere rimosso da altri componenti o attori che hanno accesso al bucket.
Ciò può accadere quando l'app è stata interrotta per troppo tempo e il file di parte in corso a cui fa riferimento il punto di salvataggio dell'app è stato rimosso dalla politica del ciclo di vita del bucket S3. MultiPartUpload Per evitare questa classe di errori, assicurati che la policy sul MPU ciclo di vita di S3 Bucket copra un periodo sufficientemente ampio per il tuo caso d'uso.
Ciò può accadere anche quando il file delle parti In corso è stato rimosso manualmente o da un altro componente del sistema. Per evitare questa classe di errori, assicurarsi che i file delle parti In corso non vengano rimossi da altri attori o componenti.
Condizione di competizione in cui viene innescato un checkpoint automatico dopo il checkpoint: ciò influisce sulle versioni di servizio gestito per Apache Flink fino alla 1.13 inclusa. Questo problema è stato risolto nella versione 1.15 di Managed Service for Apache Flink. Esegui la migrazione dell'applicazione alla versione più recente di Managed Service for Apache Flink per evitare che si verifichino recidive. Ti suggeriamo anche di migrare da a. StreamingFileSink FileSink
Quando le applicazioni vengono arrestate o aggiornate, il servizio gestito per Apache Flink innesca un savepoint e arresta l'applicazione in due passaggi. Se tra i due passaggi si innesca un checkpoint automatico il savepoint sarà inutilizzabile, in quanto il relativo file delle parti in corso verrebbe rinominato e potenzialmente salvato.