Topik ini menjelaskan prinsip dasar pemrosesan batch Flink dan cara menyetel konfigurasinya.
Informasi latar belakang
Sebagai kerangka komputasi terpadu yang mendukung pemrosesan aliran dan batch, Flink dapat menangani dua pola data yang berbeda. Flink berbagi banyak mekanisme eksekusi inti antara mode pemrosesan aliran dan batch. Namun, kedua mode tersebut memiliki perbedaan utama dalam eksekusi pekerjaan, pengaturan parameter, dan penyetelan kinerja. Topik ini berfokus pada pekerjaan batch Flink, memperkenalkan mekanisme eksekusi unik serta parameter konfigurasi khas pekerjaan batch. Memahami perbedaan ini membantu Anda menyetel pekerjaan secara lebih efisien dan memecahkan masalah pada pekerjaan batch Flink.
Realtime Compute for Apache Flink juga menyediakan dukungan khusus untuk pemrosesan batch. Layanan ini menawarkan kemampuan seperti pengembangan pekerjaan, operasi dan pemeliharaan (O&M), orkestrasi, manajemen antrian sumber daya, serta eksplorasi hasil data. Untuk memulai dengan cepat, lihat Panduan Memulai Cepat Pemrosesan Batch Flink.
Perbandingan pekerjaan batch dan pekerjaan aliran
Sebelum mempelajari parameter konfigurasi dan metode penyetelan untuk pekerjaan batch Flink, penting untuk memahami perbedaan antara mekanisme eksekusi pekerjaan batch dan aliran Flink.
Mode eksekusi
Pekerjaan aliran: Mode pemrosesan aliran berfokus pada penanganan aliran data kontinu yang tak terbatas. Tujuan utamanya adalah mencapai pemrosesan data dengan latensi rendah. Dalam mode ini, data langsung diteruskan antar node dan diproses dalam pipeline. Oleh karena itu, subtugas dari semua node dalam pekerjaan aliran diterapkan dan dieksekusi secara bersamaan.

Pekerjaan batch: Mode pemrosesan batch berfokus pada penanganan set data terbatas. Tujuan utamanya adalah memberikan pemrosesan data ber-throughput tinggi. Dalam mode eksekusi ini, sebuah pekerjaan biasanya terdiri dari beberapa tahap. Tahap-tahap independen dapat berjalan secara paralel untuk meningkatkan pemanfaatan sumber daya. Untuk tahap yang memiliki dependensi data, tugas downstream harus menunggu tugas upstream selesai sebelum dapat dimulai.

Transmisi data
Pekerjaan aliran: Untuk mencapai latensi rendah, pekerjaan aliran menyimpan data antara di memori dan mentransmisikannya langsung melalui jaringan tanpa persistensi. Jika node downstream memiliki kapasitas pemrosesan yang tidak mencukupi, hal ini dapat menyebabkan tekanan balik (backpressure) pada node upstream.
Pekerjaan batch: Pekerjaan batch menulis hasil antaranya ke sistem penyimpanan eksternal untuk digunakan oleh tugas downstream. Secara default, file hasil ini disimpan di disk lokal TaskManager. Jika layanan shuffle jarak jauh digunakan, file data disimpan di layanan shuffle jarak jauh tersebut.
Persyaratan sumber daya
Pekerjaan aliran: Pekerjaan aliran memerlukan seluruh sumber daya dialokasikan di awal saat startup. Hal ini memastikan bahwa semua subtugas dapat diterapkan dan dijalankan secara bersamaan.
Pekerjaan batch: Pekerjaan batch tidak perlu mengakuisisi seluruh sumber daya sekaligus selama runtime. Flink dapat menjadwalkan tugas secara bertahap begitu data masukannya siap. Hal ini memungkinkan penggunaan sumber daya yang lebih efisien. Pekerjaan dapat berjalan lancar bahkan dengan sumber daya terbatas (termasuk satu slot saja).
Kegagalan dan restart tugas
Pekerjaan aliran: Jika terjadi kegagalan, pekerjaan aliran dapat pulih dari checkpoint atau titik simpan (savepoint) terbaru. Hal ini meminimalkan pengembalian (rollback) progres pekerjaan. Namun, karena hasil antara tidak dipertahankan (tidak dipersistensi), semua tugas harus di-restart selama pemulihan.
Pekerjaan batch: Pekerjaan batch menyimpan hasil antaranya ke disk. Jika suatu tugas gagal dan di-restart, hasil antara tersebut dapat digunakan kembali. Artinya, hanya tugas yang gagal dan tugas downstream-nya yang perlu di-restart, tanpa rollback global. Hal ini mengurangi jumlah tugas yang perlu dieksekusi ulang setelah kegagalan dan meningkatkan efisiensi pemulihan. Namun, karena pekerjaan batch tidak memiliki mekanisme checkpoint, tugas yang di-restart tersebut harus dijalankan dari awal.
Parameter konfigurasi utama dan metode penyetelan
Bagian ini menjelaskan parameter konfigurasi utama untuk pekerjaan batch Flink.
Konfigurasi sumber daya
CPU dan memori
Di jendela konfigurasi sumber daya untuk pekerjaan, Anda dapat mengatur sumber daya CPU dan memori untuk JobManager dan setiap TaskManager. Berikut adalah beberapa saran konfigurasi:
Sumber daya JobManager: Alokasikan 1 core CPU dan minimal 4 GiB memori untuk JobManager. Hal ini memastikan penjadwalan dan manajemen pekerjaan berjalan lancar.
Sumber daya TaskManager: Alokasikan sumber daya berdasarkan jumlah slot. Secara spesifik, sediakan masing-masing slot dengan 1 core CPU dan 4 GiB memori. Jika sebuah TaskManager memiliki n slot, alokasikan total n core CPU dan 4n GiB memori untuknya.
Secara default, pekerjaan batch di mesin komputasi waktu nyata mengalokasikan satu slot per TaskManager. Untuk mengurangi overhead penjadwalan dan manajemen TaskManager, pertimbangkan untuk menambah jumlah slot per TaskManager menjadi 2 atau 4.
Namun, perhatikan bahwa ruang disk yang tersedia untuk setiap TaskManager terbatas dan sebanding dengan jumlah core CPU yang dialokasikan. Secara spesifik, setiap core CPU dialokasikan kuota ruang disk sebesar 20 GiB. Ruang disk minimum untuk TaskManager adalah 20 GiB, dan maksimumnya adalah 200 GiB.
Oleh karena itu, menambah jumlah slot pada setiap TaskManager berarti lebih banyak tugas berjalan pada node TaskManager yang sama. Hal ini dapat membebani ruang disk lokal dan bahkan menyebabkan kekurangan ruang disk. Kekurangan ruang disk menyebabkan pekerjaan gagal dan melakukan restart.
Untuk pekerjaan berskala besar atau pekerjaan dengan topologi kompleks, JobManager dan TaskManager mungkin memerlukan spesifikasi sumber daya yang lebih tinggi. Dalam kasus ini, tingkatkan konfigurasi sumber daya sesuai kebutuhan untuk memastikan pekerjaan berjalan secara efisien dan stabil.
Jika Anda mengalami masalah terkait sumber daya selama eksekusi pekerjaan, lihat dokumen berikut untuk informasi pemecahan masalah:
Pemecahan Masalah Memori Apache Flink
Untuk memastikan eksekusi pekerjaan yang stabil, konfigurasikan setiap JobManager dan TaskManager dengan minimal 0,5 core CPU dan 2 GiB memori.
Jumlah maksimum slot
Anda dapat mengonfigurasi jumlah maksimum slot yang dapat dialokasikan untuk pekerjaan Flink. Karena pekerjaan batch Flink dapat berjalan di lingkungan dengan sumber daya terbatas, menetapkan jumlah maksimum slot membatasi jumlah maksimum sumber daya yang dapat digunakan oleh pekerjaan batch. Hal ini membantu mencegah pekerjaan batch mengonsumsi sumber daya berlebihan dan memengaruhi pekerjaan lain. Untuk informasi lebih lanjut, lihat Jumlah TaskManager untuk pekerjaan batch dapat melebihi tingkat paralelisme.
Konfigurasi paralelisme
Di konfigurasi sumber daya pekerjaan, Anda dapat menetapkan tingkat paralelisme global atau mengaktifkan inferensi paralelisme otomatis.
Paralelisme global: Tingkat paralelisme global menentukan jumlah maksimum tugas yang dapat berjalan secara paralel dalam sebuah pekerjaan. Anda dapat langsung memasukkan tingkat paralelisme untuk pekerjaan di halaman tersebut. Pekerjaan akan menggunakan nilai ini sebagai tingkat paralelisme default global.
Inferensi otomatis: Saat inferensi otomatis diaktifkan, pekerjaan batch Flink secara otomatis menginferensi tingkat paralelisme dengan menganalisis volume data total yang dikonsumsi oleh setiap node dan volume data rata-rata yang diharapkan diproses oleh setiap subtugas. Hal ini membantu Anda mengoptimalkan konfigurasi paralelisme.
Selain itu, Realtime Compute Engine Ververica Runtime (VVR) 8.0 dan versi lebih baru menyediakan item konfigurasi berikut. Anda dapat mengonfigurasinya di area pengaturan parameter runtime pekerjaan untuk menyetel lebih lanjut inferensi paralelisme otomatis:
Di Realtime Compute Engine VVR 8.0 dan versi lebih baru, fitur inferensi paralelisme otomatis diaktifkan secara default untuk pekerjaan batch Flink. Tingkat paralelisme global yang Anda konfigurasi digunakan sebagai batas atas untuk paralelisme yang diinferensi. Gunakan Realtime Compute Engine VVR 8.0 atau versi lebih baru untuk mencapai kinerja yang lebih baik pada pekerjaan batch Flink.
Item konfigurasi | Deskripsi | Nilai default |
execution.batch.adaptive.auto-parallelism.enabled | Menentukan apakah akan mengaktifkan inferensi paralelisme otomatis. | true |
execution.batch.adaptive.auto-parallelism.min-parallelism | Tingkat paralelisme minimum yang dapat ditetapkan secara otomatis. | 1 |
execution.batch.adaptive.auto-parallelism.max-parallelism | Tingkat paralelisme maksimum yang dapat ditetapkan secara otomatis. Jika parameter ini tidak dikonfigurasi, tingkat paralelisme global digunakan sebagai nilai default. | 128 |
execution.batch.adaptive.auto-parallelism.avg-data-volume-per-task | Volume data rata-rata yang diharapkan diproses oleh setiap tugas. Flink secara dinamis menentukan tingkat paralelisme untuk suatu node berdasarkan konfigurasi ini dan volume data aktual yang perlu diproses oleh node tersebut. | 16MiB |
execution.batch.adaptive.auto-parallelism.default-source-parallelism | Tingkat paralelisme default untuk Operator Source. Saat ini, Flink tidak dapat secara akurat mempersepsi volume data yang akan dibaca oleh node Source. Oleh karena itu, konfigurasikan tingkat paralelismenya. Jika parameter ini tidak dikonfigurasi, tingkat paralelisme global digunakan. | 1 |
FAQ
Jumlah TaskManager untuk pekerjaan batch dapat melebihi tingkat paralelisme
Dalam pekerjaan batch, TaskManager (TM) dibuat dan dilepas secara dinamis sesuai kebutuhan. Misalnya:
Pekerjaan memiliki tingkat paralelisme 16, dan setiap TM hanya dialokasikan 1 slot.
Saat operator pertama dimulai, 16 TM dibuat.
Jika beberapa subtugas selesai lebih awal, TM yang sesuai secara otomatis dilepas setelah periode tidak aktif.
Saat operator berikutnya mulai berjalan, sistem meminta TM baru. Hal ini menyebabkan jumlah total TM yang dibuat (misalnya 17, 18, atau 19) melebihi tingkat paralelisme awal.
Ini bukan pengecualian. Ini adalah perilaku normal penjadwalan elastis untuk pekerjaan batch.
Untuk membatasi secara ketat jumlah total TM, Anda dapat mengonfigurasi parameter Jumlah maksimum slot.
Perbedaan antara tingkat paralelisme dan jumlah slot
Tingkat paralelisme: Menentukan jumlah subtugas yang dapat berjalan secara konkuren untuk setiap operator dalam pekerjaan. Ini adalah batas atas teoretis kapasitas pemrosesan.
Slot: Unit sumber daya di Flink. Satu slot dapat menjalankan satu subtugas.
Pekerjaan aliran: Secara default, berbagi slot diaktifkan. Saat startup, pekerjaan meminta jumlah slot yang sama dengan tingkat paralelisme global untuk memastikan semua tugas berjalan segera.
Pekerjaan batch: Tidak perlu mengalokasikan semua sumber daya di awal. Jumlah tugas paralel aktual dibatasi oleh slot yang tersedia saat ini, meskipun tingkat paralelisme global lebih tinggi.
Contoh: Pekerjaan aliran dengan tingkat paralelisme 4 memerlukan 4 slot. Pekerjaan batch dapat menjalankan maksimal 4 subtugas jika kluster hanya memiliki 4 slot yang tersedia. Tugas-tugas yang tersisa menunggu slot dilepas sebelum dapat dijalankan.
Cara menemukan penyebab pekerjaan batch tersendat
Untuk mempelajari cara memantau penggunaan memori, CPU, dan thread TaskManager, lihat Lihat kinerja pekerjaan.
Pemecahan masalah memori: Pertama, periksa penggunaan memori untuk menentukan apakah terjadi Pengumpulan sampah (GC) yang sering akibat memori tidak mencukupi. Jika Anda memastikan bahwa memori tidak mencukupi, tingkatkan konfigurasi memori TaskManager untuk mengurangi masalah kinerja yang disebabkan oleh GC yang sering.
Analisis penggunaan CPU: Periksa apakah thread tertentu mengonsumsi banyak sumber daya CPU. Hal ini bisa menjadi penyebab pekerjaan tersendat.
Jejak stack thread: Gunakan informasi stack thread untuk menganalisis hambatan dalam eksekusi node saat ini.
Kesalahan: No space left on device
Jika Anda mengalami kesalahan "No space left on device" saat menjalankan pekerjaan batch di mesin komputasi waktu nyata, kesalahan tersebut biasanya menunjukkan bahwa ruang disk lokal yang digunakan TaskManager untuk menyimpan file hasil antara telah habis. Ruang disk yang tersedia untuk setiap TaskManager terbatas dan sebanding dengan jumlah core CPU yang dialokasikan.
Solusi:
Kurangi jumlah slot pada setiap TaskManager. Hal ini mengurangi jumlah tugas paralel pada satu node dan mengurangi permintaan terhadap ruang disk lokal.
Tingkatkan jumlah core CPU untuk TaskManager. Hal ini meningkatkan ruang disk TaskManager.
Dokumen terkait
Untuk memulai pemrosesan batch menggunakan fitur utama Realtime Compute for Apache Flink, lihat Panduan Memulai Cepat Pemrosesan Batch Flink.
Untuk informasi tentang cara mengonfigurasi parameter runtime, lihat Bagaimana cara mengonfigurasi parameter runtime pekerjaan kustom?