View a markdown version of this page

Memutakhirkan ke Flink 2.2: Panduan lengkap - 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.

Memutakhirkan ke Flink 2.2: Panduan lengkap

Panduan ini memberikan petunjuk langkah demi langkah untuk meningkatkan aplikasi Amazon Managed Service for Apache Flink dari Flink 1.x ke Flink 2.2. Ini adalah peningkatan versi utama dengan perubahan besar yang memerlukan perencanaan dan pengujian yang cermat.

Upgrade versi utama bersifat uni-directional

Operasi Upgrade dapat memindahkan aplikasi Anda dari Flink 1.x ke 2.2 dengan pelestarian status, tetapi Anda tidak dapat pindah kembali dari 2.2 ke 1.x dengan status 2.2. Jika aplikasi Anda menjadi tidak sehat setelah memutakhirkan, gunakan Rollback API untuk kembali ke versi 1.x dengan status 1.x asli Anda dari snapshot terbaru.

Prasyarat

Sebelum memulai upgrade Anda:

Memahami jalur migrasi Anda

Pengalaman upgrade Anda tergantung pada kompatibilitas aplikasi Anda dengan Flink 2.2. Memahami jalur ini membantu Anda mempersiapkan dengan tepat dan menetapkan harapan yang realistis.

Jalur 1: Status biner dan aplikasi yang kompatibel

Apa yang diharapkan:

  • Memanggil operasi Upgrade

  • Selesaikan migrasi ke 2.2 dengan transisi status aplikasi: RUNNING → → UPDATING RUNNING

  • Pertahankan semua status aplikasi tanpa kehilangan data atau pemrosesan ulang

  • Pengalaman yang sama dengan migrasi versi minor

Terbaik untuk: Aplikasi atau aplikasi tanpa status menggunakan serialisasi yang kompatibel (Avro, skema Protobuf yang kompatibel, POJO tanpa koleksi)

Jalur 2: Ketidakcocokan biner

Apa yang diharapkan:

  • Memanggil operasi Upgrade

  • Operasi gagal dan memunculkan ketidakcocokan biner melalui Operations API dan log

  • Dengan auto-rollback diaktifkan: Aplikasi secara otomatis berputar kembali dalam hitungan menit tanpa campur tangan Anda

  • Dengan auto-rollback dinonaktifkan: Aplikasi tetap dalam keadaan berjalan tanpa pemrosesan data; Anda secara manual memutar kembali ke versi yang lebih lama

  • Setelah biner diperbaiki, gunakan UpdateApplication API untuk pengalaman yang mirip dengan Path 1

Terbaik untuk: Aplikasi menggunakan API yang dihapus yang terdeteksi selama startup pekerjaan Flink

Jalur 3: Status aplikasi yang tidak kompatibel

Apa yang diharapkan:

  • Memanggil operasi Upgrade

  • Migrasi tampaknya berhasil pada awalnya

  • Aplikasi memasuki loop restart dalam hitungan detik karena pemulihan status gagal

  • Mendeteksi kegagalan melalui CloudWatch Metrik yang menunjukkan restart terus menerus

  • Memanggil operasi Rollback secara manual

  • Kembali ke produksi dalam beberapa menit setelah memulai rollback

  • T Migrasi negara injau aplikasi Anda

Terbaik untuk: Aplikasi dengan inkompatibilitas serialisasi status (POJO dengan koleksi, status tertentu) Kryo-serialized

catatan

Sangat disarankan untuk membuat replika aplikasi produksi Anda dan menguji setiap fase peningkatan berikut pada replika sebelum mengikuti langkah yang sama untuk aplikasi produksi Anda.

Tahap 1: Persiapan

Perbarui kode aplikasi

Perbarui kode aplikasi Anda agar kompatibel dengan Flink 2.2:

  • Perbarui dependensi Flink ke versi 2.2.1 di atau Anda pom.xml build.gradle

  • Perbarui dependensi konektor ke versi yang kompatibel dengan Flink 2.2 (lihat) Ketersediaan konektor

  • Hapus penggunaan API yang tidak digunakan lagi:

    • Ganti DataSet API dengan DataStream API atau Tabel API/SQL

    • Ganti la SourceFunction was/SinkFunctiondengan API FLIP-27 Sumber dan FLIP-143 Sink

    • Ganti penggunaan API Scala dengan Java API

  • Memperbarui ke Java 17

Unggah kode aplikasi yang diperbarui

  • Bangun JAR aplikasi Anda dengan dependensi Flink 2.2

  • Unggah ke Amazon S3 dengan nama file yang berbeda dari JAR Anda saat ini (misalnya,my-app-flink-2.2.jar)

  • Perhatikan bucket dan kunci S3 untuk digunakan pada langkah peningkatan

Tahap 2: Aktifkan rollback otomatis

Auto-rollback memungkinkan Amazon Managed Service for Apache Flink untuk secara otomatis kembali ke versi sebelumnya jika peningkatan gagal.

Periksa status pengembalian otomatis

Konsol Manajemen AWS:

  1. Arahkan ke aplikasi Anda

  2. Pilih Konfigurasi

  3. Di bawah Pengaturan aplikasi, verifikasi Rollback sistem di aktifkan

AWS CLI:

aws kinesisanalyticsv2 describe-application \ --application-name MyApplication \ --query 'ApplicationDetail.ApplicationConfigurationDescription.ApplicationSystemRollbackConfigurationDescription.RollbackEnabled'

Aktifkan rollback otomatis (jika tidak diaktifkan)

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --application-configuration-update '{ "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": true } }'

Tahap 3: Ambil snapshot (opsional)

Jika snapshot otomatis diaktifkan untuk aplikasi Anda, Anda dapat melewati langkah ini, jika tidak, ambil snapshot aplikasi Anda untuk menyimpan status aplikasi Anda sebelum memutakhirkan.

Ambil snapshot dari aplikasi yang sedang berjalan

Konsol Manajemen AWS:

  1. Arahkan ke aplikasi Anda

  2. Pilih Snapshot

  3. Pilih Buat snapshot

  4. Masukkan nama snapshot (misalnya,pre-flink-2.2-upgrade)

  5. Pilih Buat

AWS CLI:

aws kinesisanalyticsv2 create-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Verifikasi pembuatan snapshot

aws kinesisanalyticsv2 describe-application-snapshot \ --application-name MyApplication \ --snapshot-name pre-flink-2.2-upgrade

Tunggu sampai SnapshotStatus READY sebelum melanjutkan.

Tahap 4: Upgrade aplikasi

Anda dapat meningkatkan aplikasi Flink Anda dengan menggunakan UpdateApplication tindakan.

Anda dapat memanggil UpdateApplication API dengan berbagai cara:

  • Gunakan Konsol Manajemen AWS.

    • Buka halaman aplikasi Anda di Konsol Manajemen AWS.

    • Pilih Konfigurasikan

    • Pilih runtime baru dan snapshot yang ingin Anda mulai dari, juga dikenal sebagai konfigurasi pemulihan. Gunakan pengaturan terbaru sebagai konfigurasi pemulihan untuk memulai aplikasi dari snapshot terbaru. Arahkan ke aplikasi baru yang ditingkatkan JAR/zip di Amazon S3.

  • Gunakan ak AWS CLI update-application sinya.

  • Gunakan CloudFormation.

    • Perbarui RuntimeEnvironment bidang. Sebelumnya, CloudFormation menghapus aplikasi dan membuat yang baru, menyebabkan snapshot dan riwayat aplikasi lainnya hilang. Sekarang CloudFormation perbarui RuntimeEnvironment di tempat Anda dan tidak menghapus aplikasi Anda.

  • Gunakan AWS SDK.

    • Konsultasikan dokumentasi SDK untuk bahasa pemrograman pilihan Anda. Lihat UpdateApplication.

Anda dapat melakukan upgrade saat aplikasi dalam RUNNING keadaan atau saat aplikasi dihentikan dalam READY keadaan. Amazon Managed Service for Apache Flink memvalidasi kompatibilitas antara versi runtime asli dan versi runtime target. Pemeriksaan kompatibilitas ini berjalan UpdateApplication saat Anda melakukan saat dalam RUNNING status atau berikutnya StartApplication jika Anda memutakhirkan saat dalam READY status.

Tingkatkan dari status RUNNING

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Upgrade dari status READY

aws kinesisanalyticsv2 update-application \ --application-name MyApplication \ --current-application-version-id <version-id> \ --runtime-environment-update FLINK-2_2 \ --application-configuration-update '{ "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "FileKeyUpdate": "my-app-flink-2.2.jar" } } } }'

Tahap 5: Pembaruan monitor

Pemeriksaan kompatibilitas

  • Gunakan Operations API untuk memeriksa status pemutakhiran. Jika ada ketidakcocokan biner atau masalah dengan startup pekerjaan, operasi peningkatan akan gagal dengan log.

  • Jika Operasi Upgrade telah berhasil tetapi aplikasi macet dalam loop restart, ini berarti status tidak kompatibel dengan versi Flink baru atau ada masalah dengan kode yang diperbarui. Tinjau Panduan kompatibilitas status untuk peningkatan Flink 2.2 tentang cara mengidentifikasi masalah ketidakcocokan negara.

Memantau kesehatan aplikasi

Status aplikasi:

  • Status aplikasi harus bertransisi: RUNNINGUPDATINGRUNNING

  • Periksa runtime aplikasi. Jika 2.2, operasi peningkatan berhasil.

  • Jika aplikasi Anda aktif RUNNING tetapi masih menggunakan runtime yang lebih lama, rollback otomatis dimulai. Operations API akan menampilkan operasi sebagaiFAILED. Periksa log untuk menemukan pengecualian untuk kegagalan.

Selain itu, pantau metrik ini di CloudWatch:

Mulai ulang metrik:

  • numRestarts: Pantau restart yang tidak terduga - peningkatan berhasil numRestarts jika nol dan uptime atau runningTime meningkat.

Metrik pos pemeriksaan:

  • lastCheckpointDuration: Harus mirip dengan nilai pra-upgrade

  • numberOfFailedCheckpoints: Harus tetap di 0

Tahap 6: Validasi perilaku aplikasi

Setelah aplikasi berjalan di Flink 2.2:

Validasi fungsional

  • Verifikasi data sedang dibaca dari sumber

  • Verifikasi data sedang ditulis ke wastafel

  • Verifikasi logika bisnis menghasilkan hasil yang diharapkan

  • Bandingkan output dengan baseline pra-upgrade

Validasi kinerja

  • Memantau metrik latensi (waktu pemrosesan ujung ke ujung)

  • Memantau metrik throughput (catatan per detik)

  • Pantau durasi dan ukuran pos pemeriksaan

  • Memantau memori dan pemanfaatan CPU

Jalankan selama 24+ jam

Izinkan aplikasi berjalan setidaknya selama 24 jam dalam produksi untuk memastikan:

  • Tidak ada kebocoran memori

  • Perilaku pos pemeriksaan yang stabil

  • Tidak ada restart yang tidak terduga

  • Throughput yang konsisten

Tahap 7: Prosedur Rollback

Jika upgrade gagal atau aplikasi berjalan tetapi tidak sehat, putar kembali ke versi sebelumnya.

Kembalikan otomatis

Jika auto-rollback diaktifkan dan peningkatan gagal selama startup, Amazon Managed Service untuk Apache Flink secara otomatis kembali ke versi sebelumnya.

Pengembalian manual

Jika aplikasi berjalan tetapi tidak sehat, gunakan RollbackApplication API:

Konsol Manajemen AWS:

  1. Arahkan ke aplikasi Anda

  2. Pilih T indakan Putar kembali

  3. Konfirmasikan rollback

AWS CLI:

aws kinesisanalyticsv2 rollback-application \ --application-name MyApplication \ --current-application-version-id <version-id>

Apa yang terjadi selama rollback:

  • Aplikasi berhenti

  • Runtime kembali ke versi Flink sebelumnya

  • Kode aplikasi kembali ke JAR sebelumnya

  • Aplikasi dimulai ulang dari snapshot terakhir yang berhasil diambil sebelum peningkatan

penting
  • Anda tidak dapat memulihkan snapshot Flink 2.2 di Flink 1.x

  • Rollback menggunakan snapshot yang diambil sebelum peningkatan

  • Selalu ambil snapshot sebelum memutakhirkan (Tahap 3)

Langkah selanjutnya

Untuk pertanyaan atau masalah selama peningkatan, lihat Memecahkan Masalah Layanan Terkelola untuk Apache Flink atau hubungi AWS Dukungan.