Amazon Managed Service untuk Apache Flink sebelumnya dikenal sebagai Amazon Kinesis Data Analytics untuk Apache Flink.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kelola cadangan aplikasi menggunakan snapshot
Snapshot adalah Managed Service untuk implementasi Apache Flink dari Apache Flink Savepoint. Snapshot adalah cadangan status aplikasi yang dipicu, dibuat, dan dikelola pengguna atau layanan. Untuk informasi tentang Apache Flink Savepoints, lihat Savepoints di Dokumentasi Apache Flink.
catatan
Sebaiknya aplikasi Anda membuat snapshot beberapa kali sehari untuk memulai ulang dengan benar menggunakan data status yang benar. Frekuensi yang benar untuk snapshot Anda bergantung pada logika bisnis aplikasi Anda. Mengambil snapshot yang sering memungkinkan Anda memulihkan data yang lebih baru, tetapi meningkatkan biaya dan membutuhkan lebih banyak sumber daya sistem.
Di Managed Service for Apache Flink, Anda mengelola snapshot menggunakan tindakan berikut: API
Untuk batas per aplikasi pada jumlah snapshot, lihat Layanan Terkelola untuk kuota notebook Apache Flink dan Studio. Jika aplikasi Anda mencapai batas pada snapshot, lalu secara manual membuat snapshot gagal dengan LimitExceededException
.
Layanan Terkelola untuk Apache Flink tidak pernah menghapus snapshot. Anda harus secara manual menghapus snapshot menggunakan tindakan DeleteApplicationSnapshot
.
Untuk memuat snapshot status aplikasi tersimpan saat memulai aplikasi, gunakan parameter ApplicationRestoreConfiguration
dari StartApplication
atau tindakan UpdateApplication
.
Topik ini berisi bagian-bagian berikut:
Kelola pembuatan snapshot otomatis
Jika SnapshotsEnabled
diatur ke true
dalam untuk aplikasi, Managed Service ApplicationSnapshotConfigurationfor Apache Flink secara otomatis membuat dan menggunakan snapshot saat aplikasi diperbarui, diskalakan, atau dihentikan untuk menyediakan semantik pemrosesan yang tepat sekali.
catatan
Mengatur ApplicationSnapshotConfiguration::SnapshotsEnabled
ke false
akan menyebabkan kehilangan data selama pembaruan aplikasi.
catatan
Layanan Terkelola untuk Apache Flink memicu savepoint perantara selama pembuatan snapshot. Untuk Flink versi 1.15 atau lebih besar, savepoint menengah tidak lagi melakukan efek samping apa pun. Lihat Memicu savepoint
Snapshot yang dibuat secara otomatis memiliki kualitas berikut:
-
Snapshot dikelola oleh layanan, tetapi Anda dapat melihat snapshot menggunakan tindakan. ListApplicationSnapshots Snapshot yang dibuat secara otomatis menghitung batas snapshot Anda.
-
Jika aplikasi Anda melebihi batas snapshot, snapshot yang dibuat secara manual akan gagal, tetapi Layanan Terkelola untuk layanan Apache Flink akan tetap berhasil membuat snapshot saat aplikasi diperbarui, diskalakan, atau dihentikan. Anda harus menghapus snapshot secara manual menggunakan DeleteApplicationSnapshottindakan sebelum membuat lebih banyak snapshot secara manual.
Pulihkan dari snapshot yang berisi data status yang tidak kompatibel
Karena snapshot berisi informasi tentang operator, memulihkan data status dari snapshot untuk operator yang telah berubah sejak versi aplikasi sebelumnya mungkin memiliki hasil yang tak terduga. Aplikasi akan gagal jika mencoba memulihkan data status dari snapshot yang tidak sesuai dengan operator saat ini. Aplikasi yang gagal akan terhenti di status STOPPING
atau UPDATING
.
Untuk memungkinkan aplikasi memulihkan dari snapshot yang berisi data status yang tidak kompatibel, atur AllowNonRestoredState
parameter FlinkRunConfigurationuntuk true
menggunakan tindakan. UpdateApplication
Anda akan melihat perilaku berikut ketika aplikasi dipulihkan dari snapshot usang:
Operator ditambahkan: Jika operator baru ditambahkan, titik simpan tidak memiliki data status untuk operator baru. Tidak ada kesalahan yang akan terjadi, dan tidak perlu untuk mengatur
AllowNonRestoredState
.Operator dihapus: Jika operator yang ada dihapus, titik simpan memiliki data status untuk operator yang hilang. Kesalahan akan terjadi kecuali
AllowNonRestoredState
diatur ketrue
.Operator dimodifikasi: Jika perubahan yang kompatibel dibuat, seperti mengubah tipe parameter ke tipe yang kompatibel, aplikasi dapat memulihkan dari snapshot usang. Untuk informasi selengkapnya tentang memulihkan dari snapshot, lihat Savepoints
di Dokumentasi Apache Flink. Aplikasi yang menggunakan Apache Flink versi 1.8 atau yang lebih baru mungkin dapat dipulihkan dari snapshot dengan skema yang berbeda. Aplikasi yang menggunakan Apache Flink versi 1.6 tidak dapat dipulihkan. Untuk two-phase-commit sink, sebaiknya gunakan snapshot sistem (SWs) alih-alih snapshot () buatan pengguna. CreateApplicationSnapshot Untuk Flink, Layanan Terkelola untuk Apache Flink memicu savepoint perantara selama pembuatan snapshot. Untuk Flink 1.15 dan seterusnya, savepoint menengah tidak lagi melakukan efek samping apa pun. Lihat Memicu Savepoint
.
Jika Anda perlu melanjutkan aplikasi yang tidak kompatibel dengan data savepoint yang ada, sebaiknya Anda melewatkan pemulihan dari snapshot dengan menyetel ApplicationRestoreType
parameter tindakan ke. StartApplicationSKIP_RESTORE_FROM_SNAPSHOT
Untuk informasi selengkapnya tentang cara Apache Flink menangai data status yang tidak kompatibel, lihat Evolusi Skema Status
Tinjau contoh snapshot API
Bagian ini mencakup contoh permintaan API tindakan untuk menggunakan snapshot dengan aplikasi. Untuk informasi tentang cara menggunakan JSON file untuk masukan API tindakan, lihatLayanan Terkelola untuk kode contoh Apache Flink API.
Aktifkan snapshot untuk aplikasi
Contoh permintaan untuk tindakan UpdateApplication
berikut mengaktifkan snapshot untuk aplikasi:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }
Buat snapshot
Contoh permintaan untuk tindakan CreateApplicationSnapshot
berikut membuat snapshot dari status aplikasi saat ini:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Buat daftar snapshot untuk aplikasi
Contoh permintaan untuk tindakan ListApplicationSnapshots
berikut mencantumkan 50 snapshot pertama untuk status aplikasi saat ini:
{ "ApplicationName": "MyApplication", "Limit": 50 }
Rincian daftar untuk snapshot aplikasi
Contoh permintaan berikut untuk tindakan DescribeApplicationSnapshot
mencantumkan detail untuk snapshot aplikasi tertentu:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }
Menghapus snapshot
Contoh permintaan berikut untuk tindakan DeleteApplicationSnapshot
menghapus snapshot yang disimpan sebelumnya. Anda bisa mendapatkan nilai SnapshotCreationTimestamp
menggunakan ListApplicationSnapshots
atau DeleteApplicationSnapshot
:
{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }
Mulai ulang aplikasi menggunakan snapshot bernama
Contoh permintaan berikut untuk tindakan StartApplication
memulai aplikasi menggunakan status yang disimpan dari snapshot tertentu:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }
Mulai ulang aplikasi menggunakan snapshot terbaru
Contoh permintaan berikut untuk tindakan StartApplication
memulai aplikasi menggunakan snapshot terbaru:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Mulai ulang aplikasi tanpa snapshot
Contoh permintaan berikut untuk tindakan StartApplication
memulai aplikasi tanpa memuat status aplikasi, bahkan jika snapshot tersedia:
{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }