View a markdown version of this page

S3 StreamingFileSink FileNotFoundExceptions - Layanan Terkelola untuk Apache Flink

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

S3 StreamingFileSink FileNotFoundExceptions

Layanan Terkelola untuk aplikasi Apache Flink dapat berjalan ke file In-progress bagian FileNotFoundException saat memulai dari snapshot jika file In-progress bagian yang dirujuk oleh savepoint-nya hilang. Ketika mode kegagalan ini terjadi, status operator aplikasi Managed Service for Apache Flink biasanya tidak dapat dipulihkan dan harus dimulai ulang tanpa menggunakan snapshot. SKIP_RESTORE_FROM_SNAPSHOT Lihat contoh stacktrace berikut:

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 menulis catatan ke sistem file yang didukung oleh Sistem File. Mengingat bahwa aliran yang masuk dapat tidak dibatasi, data diatur ke dalam file bagian dengan ukuran terbatas dengan file baru ditambahkan saat data ditulis. Kebijakan siklus hidup dan rollover bagian menentukan waktu, ukuran, dan penamaan file bagian.

Selama checkpointing dan savepointing (snapshotting), semua file Tertunda diganti namanya dan dikomit. Namun, file In-progress bagian tidak dikomit tetapi diganti namanya dan referensi mereka disimpan dalam pos pemeriksaan atau metadata savepoint untuk digunakan saat memulihkan pekerjaan. File In-progress bagian ini pada akhirnya akan bergulir ke Pending, diganti namanya, dan dilakukan oleh pos pemeriksaan atau savepoint berikutnya.

Berikut ini adalah akar penyebab dan mitigasi untuk file In-progress bagian yang hilang:

  • Snapshot basi digunakan untuk memulai Layanan Terkelola untuk aplikasi Apache Flink - hanya snapshot sistem terbaru yang diambil saat aplikasi dihentikan atau diperbarui yang dapat digunakan untuk memulai Layanan Terkelola untuk aplikasi Apache Flink dengan Amazon S3. StreamingFileSink Untuk menghindari kelas kegagalan ini, gunakan snapshot sistem terbaru.

    • Ini terjadi misalnya ketika Anda memilih snapshot yang dibuat menggunakan CreateSnapshot alih-alih Snapshot yang dipicu sistem selama berhenti atau memperbarui. Savepoint snapshot yang lebih lama menyimpan referensi kedaluwarsa ke file In-progress bagian yang telah diganti namanya dan dilakukan oleh pos pemeriksaan atau savepoint berikutnya.

    • Ini juga dapat terjadi ketika snapshot yang dipicu sistem dari Stop/Update acara non-terbaru dipilih. Contohnya adalah aplikasi dengan snapshot sistem dinonaktifkan tetapi telah RESTORE_FROM_LATEST_SNAPSHOT dikonfigurasi. Umumnya, Layanan Terkelola untuk aplikasi Apache Flink dengan Amazon StreamingFileSink S3 harus selalu mengaktifkan dan mengonfigurasi snapshot sistem. RESTORE_FROM_LATEST_SNAPSHOT

  • In-progress file bagian dihapus - Karena file In-progress bagian terletak di ember S3, itu dapat dihapus oleh komponen atau aktor lain yang memiliki akses ke ember.

    • Hal ini dapat terjadi jika Anda telah menghentikan aplikasi terlalu lama dan file In-progress bagian yang dirujuk oleh savepoint aplikasi Anda telah dihapus oleh kebijakan siklus hidup bucket MultiPartUpload S3. Untuk menghindari kelas kegagalan ini, pastikan bahwa kebijakan siklus hidup S3 Bucket MPU Anda mencakup periode yang cukup besar untuk kasus penggunaan Anda.

    • Ini juga dapat terjadi ketika file In-progress bagian telah dihapus secara manual atau oleh salah satu komponen sistem Anda. Untuk menghindari kelas kegagalan ini, pastikan bahwa file In-progress bagian tidak dihapus oleh aktor atau komponen lain.

  • Kondisi balapan di mana pos pemeriksaan otomatis dipicu setelah savepoint - Ini memengaruhi Layanan Terkelola untuk versi Apache Flink hingga dan termasuk 1.13. Masalah ini diperbaiki di Managed Service untuk Apache Flink versi 1.15. Migrasikan aplikasi Anda ke versi terbaru Layanan Terkelola untuk Apache Flink untuk mencegah kekambuhan. Kami juga menyarankan untuk bermigrasi dari StreamingFileSink ke FileSink.

    • Ketika aplikasi dihentikan atau diperbarui, Managed Service for Apache Flink memicu savepoint dan menghentikan aplikasi dalam dua langkah. Jika pos pemeriksaan otomatis terpicu di antara dua langkah, savepoint tidak akan dapat digunakan karena file In-progress bagiannya akan diganti namanya dan berpotensi dikomit.