Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
S3 StreamingFileSink FileNotFoundExceptions
Managed Service for Apache Flink-Anwendungen können FileNotFoundException beim Starten von Snapshots auf eine In-progress Teildatei stoßen, wenn eine In-progress Teildatei fehlt, auf die der Savepoint verweist. Wenn dieser Fehlermodus eintritt, ist der Operatorstatus der Anwendung, die Managed Service für Apache Flink nutzt, normalerweise nicht wiederherstellbar und muss ohne Verwendung eines Snapshots mittels SKIP_RESTORE_FROM_SNAPSHOT neu gestartet werden. Sehen Sie sich den folgenden beispielhaften Stacktrace an:
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 schreibt Datensätze in Dateisysteme, die von den Dateisystemen unterstützt werden.
Beim Checkpointing und Savepointing (Snapshotting) werden alle ausstehenden Dateien umbenannt und festgeschrieben. In-progress Teildateien werden jedoch nicht festgeschrieben, sondern umbenannt, und ihre Referenz wird in Checkpoint- oder Savepoint-Metadaten gespeichert, die bei der Wiederherstellung von Jobs verwendet werden können. Diese In-progress Teildateien werden irgendwann in den Status Ausstehend verschoben, umbenannt und von einem nachfolgenden Checkpoint oder Savepoint übernommen.
Im Folgenden sind die Hauptursachen und Abhilfemaßnahmen für fehlende Teildateien aufgeführt: In-progress
Veralteter Snapshot, der zum Starten der Managed Service for Apache Flink-Anwendung verwendet wurde — nur der letzte System-Snapshot, der beim Beenden oder Aktualisieren einer Anwendung erstellt wurde, kann verwendet werden, um eine Managed Service for Apache Flink-Anwendung mit Amazon S3 zu starten. StreamingFileSink Um diese Art von Fehlern zu vermeiden, verwenden Sie den neuesten System-Snapshot.
Dies ist beispielsweise der Fall, wenn Sie während des Stopps oder der Aktualisierung einen Snapshot auswählen, der mit
CreateSnapshotstatt mit einem vom System ausgelösten Snapshot erstellt wurde. Der Savepoint des älteren Snapshots enthält einen veralteten Verweis auf eine In-progress Teildatei, die durch einen nachfolgenden Checkpoint oder Savepoint umbenannt und festgeschrieben wurde.Dies kann auch passieren, wenn ein vom System ausgelöster Snapshot ausgewählt wird, der aufgrund eines nicht letzten Ereignisses ausgelöst wurde. Stop/Update Ein Beispiel ist eine Anwendung, bei der der System-Snapshot deaktiviert, aber
RESTORE_FROM_LATEST_SNAPSHOTkonfiguriert wurde. Im Allgemeinen StreamingFileSink sollte bei Managed Service für Apache Flink-Anwendungen mit Amazon S3 immer der System-Snapshot aktiviert undRESTORE_FROM_LATEST_SNAPSHOTkonfiguriert sein.
In-progress Teildatei entfernt — Da sich die In-progress Bauteildatei in einem S3-Bucket befindet, kann sie von anderen Komponenten oder Akteuren, die Zugriff auf den Bucket haben, entfernt werden.
Dies kann passieren, wenn Sie Ihre App zu lange angehalten haben und die In-progress Teildatei, auf die sich der Savepoint Ihrer App bezieht, durch die MultiPartUploadS3-Bucket-Lebenszyklusrichtlinie entfernt wurde. Um diese Art von Fehlern zu vermeiden, stellen Sie sicher, dass Ihre S3-Bucket-MPU-Lebenszyklusrichtlinie einen ausreichend langen Zeitraum für Ihren Anwendungsfall abdeckt.
Dies kann auch passieren, wenn die In-progress Bauteildatei manuell oder durch eine andere Komponente Ihres Systems entfernt wurde. Um diese Art von Fehlern zu vermeiden, stellen Sie bitte sicher, dass In-progress Teildateien nicht von anderen Akteuren oder Komponenten entfernt werden.
Wettlaufsituation, bei der nach dem Savepoint ein automatisierter Checkpoint ausgelöst wird – dies betrifft Versionen von Managed Service für Apache Flink bis einschließlich 1.13. Dieses Problem wurde in Managed Service für Apache Flink Version 1.15 behoben. Migrieren Sie Ihre Anwendung auf die neueste Version von Managed Service für Apache Flink, um ein erneutes Auftreten zu verhindern. Wir empfehlen auch die Migration von nach. StreamingFileSink FileSink
Wenn Anwendungen angehalten oder aktualisiert werden, löst Managed Service für Apache Flink einen Savepoint aus und hält die Anwendung in zwei Schritten an. Wenn zwischen den beiden Schritten ein automatisierter Checkpoint ausgelöst wird, ist der Savepoint unbrauchbar, da die zugehörige In-progress Teildatei umbenannt und möglicherweise festgeschrieben würde.