Anda dapat mengonfigurasi sumber daya untuk suatu pekerjaan sebelum dimulai atau mengubahnya saat sedang berjalan. Topik ini menjelaskan cara mengonfigurasi sumber daya pekerjaan dan parameter untuk setiap mode.
Perhatian
Setelah Anda mengonfigurasi sumber daya, Anda harus me-restart pekerjaan agar perubahan tersebut berlaku.
Prosedur
-
Buka halaman konfigurasi sumber daya.
-
Login ke Konsol Realtime Compute for Apache Flink.
-
Pada kolom Actions ruang kerja target, klik Console.
-
Pada halaman , klik nama pekerjaan target.
-
Pada tab Configuration, klik Edit di sisi kanan bagian Resources.
-
-
Ubah informasi sumber daya pekerjaan.
Resource mode
Description
Details
Basic mode
Dalam basic mode, Anda menentukan total sumber daya (CPU dan memori JVM total) untuk setiap TaskManager. Sistem kemudian mendistribusikan sumber daya tersebut secara merata ke semua slot berdasarkan pengaturan
taskmanager.numberOfTaskSlots. Mode ini cukup untuk sebagian besar pekerjaan simple.Expert mode
Dalam expert mode, Anda mengonfigurasi sumber daya untuk setiap Slot Sharing Group (SSG). Flink kemudian menghitung spesifikasi yang dibutuhkan untuk setiap slot dan secara dinamis meminta TaskManager serta slot yang sesuai dari resource pool. Untuk pekerjaan kompleks di mana alokasi coarse-grained dapat menyebabkan pemanfaatan sumber daya rendah, Anda dapat menggunakan kontrol sumber daya fine-grained untuk menyesuaikan setiap operator. Hal ini meningkatkan pemanfaatan sumber daya dan membantu memenuhi persyaratan throughput.
CatatanExpert mode hanya didukung untuk pekerjaan SQL.
Untuk informasi lebih lanjut tentang konsep seperti TaskManager, JobManager, Task, dan slot, lihat dokumentasi Apache Flink Architecture.
-
Klik Save.
-
Restart pekerjaan.
Basic mode (coarse-grained)
|
Parameter |
Description |
|
Parallelism |
Parallelisme keseluruhan pekerjaan. |
|
JobManager CPU |
Untuk operasi yang stabil, JobManager memerlukan minimal 0,5 core dan memori 2 GiB. Kami merekomendasikan 1 core dan 4 GiB. Nilai maksimum adalah 16 core. |
|
JobManager Memory |
Nilainya berkisar antara 2 hingga 64 GiB. |
|
TaskManager CPU |
Untuk operasi yang stabil, TaskManager memerlukan minimal 0,5 core dan memori 2 GiB. Kami merekomendasikan 1 core dan 4 GiB. Nilai maksimum adalah 16 core. |
|
TaskManager Memory |
Nilainya berkisar antara 2 hingga 64 GiB. |
|
Slots per TaskManager |
Tentukan jumlah slot untuk setiap TaskManager. |
TaskManager JVM Overhead
Dalam basic mode, ketika Anda mengatur TaskManager Memory, sistem secara otomatis menyisihkan sebagian sebagai JVM Overhead. Secara default, JVM Overhead menyumbang 10% dari total memori TaskManager. Rasio ini dikendalikan oleh parameter taskmanager.memory.jvm-overhead.fraction (default: 0.1). Untuk menyesuaikan alokasi ini, atur taskmanager.memory.jvm-overhead.fraction pada bidang Other Configurations di bawah Running Parameters Configuration.
Resident Set Size (RSS) yang dilaporkan untuk proses TaskManager tidak mencakup Page Cache. Jika TaskManager dan sistem operasi bersaing untuk memori, error kehabisan memori (OOM) dapat terjadi. Sisihkan minimal 400 MB memori tambahan di atas memori TaskManager yang direncanakan untuk mengakomodasi penggunaan OS Page Cache.
Rekomendasi memori JobManager dan troubleshooting OOM:
-
Konfigurasi minimum yang direkomendasikan — Konfigurasikan minimal 0,5 core dan memori 2 GiB untuk JobManager guna memastikan operasi yang stabil. Untuk beban kerja produksi, disarankan 1 core dan 4 GiB.
-
Ambang batas risiko OOM — Jika pemanfaatan memori JobManager secara konsisten berada di sekitar 80%, pekerjaan berisiko mengalami error OOM. Tingkatkan memori yang dialokasikan untuk mengurangi risiko ini.
-
Skenario sinkronisasi Paimon (Direct Buffer Memory OOM) — Jika pekerjaan Anda menyinkronkan volume data besar ke Paimon dan mengalami error
JobManager Direct Buffer Memory OOM, tingkatkanjobmanager.memory.off-heap.sizedari nilai default 128 MB menjadi 512 MB atau lebih. Atur parameter ini pada bidang Other Configurations di bawah Running Parameters Configuration.
Anda dapat menggunakan rumus berikut untuk menghitung kebutuhan sumber daya:
-
Jumlah CU = MAX(Total CPU untuk JobManager dan TaskManager, Total memori untuk JobManager dan TaskManager / 4)
-
Jumlah aktual TaskManager = ceil(Parallelism / Slots per TaskManager)
Slot aktual per TaskManager = Parallelism / Jumlah aktual TaskManager
-
Bulatkan hasil pembagian ke bilangan bulat terdekat ke atas.
-
Konfigurasi sumber daya tidak boleh melebihi batas maksimum default. Untuk meminta peningkatan batas ini, submit a ticket.
-
Anda juga dapat mengatur parameter
numberOfTaskSlotspada bidang Other Configurations dalam bagian Running Parameters Configuration pada tab Configuration pekerjaan. Pengaturan ini memiliki efek yang sama dengan bidang Slots per TaskManager tetapi memiliki prioritas lebih tinggi.
Sebagai contoh, asumsikan Anda mengatur parallelism ke 12 dan slots per TaskManager ke 4.
Dalam contoh ini, JobManager CPU adalah 2 core, JobManager Memory adalah 4 GiB, TaskManager CPU adalah 2 core, dan TaskManager Memory adalah 4 GiB.
Di Konsol Realtime Compute for Apache Flink, jumlah aktual TaskManager adalah 3, dan setiap TaskManager memiliki 4 slot.
Jumlah aktual TaskManager dan slot per TaskManager dihitung sebagai berikut:
-
Jumlah aktual TaskManager = ceil(Parallelism yang dikonfigurasi / Slots per TaskManager yang dikonfigurasi) = ceil(12 / 4) = 3.
-
Slot aktual per TaskManager = Parallelism / Jumlah aktual TaskManager = 12 / 3 = 4.
Expert mode (fine-grained)
-
Expert mode hanya didukung untuk pekerjaan SQL.
-
Jika Anda mengubah SQL atau konfigurasi sumber daya setelah pekerjaan diterapkan, Anda harus mengambil ulang graf paket sumber daya untuk memastikan pekerjaan dimulai dengan benar.
Konfigurasikan sumber daya dasar
|
Parameter |
Description |
|
JobManager CPU |
Untuk operasi yang stabil, JobManager memerlukan minimal 0,5 core dan memori 2 GiB. |
|
JobManager Memory |
Unit: GiB. Contohnya, 4 GiB. Nilai minimum adalah 2 GiB dan nilai maksimum adalah 64 GiB. |
|
Slots per TaskManager |
Tidak berlaku. |
Konfigurasikan sumber daya slot
-
Dalam expert mode, klik Get Plan Now untuk mengambil graf paket sumber daya.
-
Klik ikon Edit
pada kotak slot. Graf paket sumber daya yang dihasilkan menampilkan beberapa kotak slot, masing-masing berisi informasi operator VERTEX dan nilai PARALLELISM. -
Ubah konfigurasi slot. Di kotak dialog, Anda dapat mengonfigurasi parameter CPU, heap memory, off-heap memory, dan parallelism.
Parallelism yang Anda atur di sini berlaku untuk semua operator dalam Slot Sharing Group ini. Setelah Anda menyimpan konfigurasi, sistem secara otomatis:
-
Mengatur parallelism yang sama untuk semua operator dalam Slot Sharing Group ini.
-
Mengalokasikan memori yang diperlukan untuk backend status, Python, dan operator berdasarkan logika komputasi pekerjaan. Alokasi ini bersifat otomatis.
-
Untuk node Source, kami merekomendasikan mengatur parallelism yang proporsional dengan jumlah partisinya. Dengan kata lain, parallelism harus merupakan pembagi dari jumlah partisi. Misalnya, jika topik Kafka memiliki 16 partisi, atur parallelism ke 16, 8, atau 4 untuk menghindari kesenjangan data.
-
Mengatur parallelism node Source terlalu rendah dapat menyebabkan bottleneck, karena satu Source mungkin membaca terlalu banyak data dan mengurangi throughput pekerjaan.
-
Untuk node lainnya, atur parallelism sesuai dengan traffic datanya, berikan parallelism lebih tinggi untuk node dengan traffic lebih besar.
CatatanCatatanDalam expert mode, kotak dialog konfigurasi slot menampilkan CPU, Heap Memory, dan Off-Heap Memory untuk dikonfigurasi secara manual. Komponen memori lainnya — termasuk JVM Overhead, buffer jaringan, dan memori framework — dialokasikan secara otomatis oleh sistem sesuai proporsi defaultnya. Komponen-komponen ini telah dialokasikan sebelumnya saat TaskManager dimulai dan tidak disesuaikan secara dinamis selama eksekusi pekerjaan.
Jika Anda mengalami error kekurangan memori yang disebabkan oleh komponen yang dialokasikan secara otomatis ini, konfigurasikan parameter berikut pada bidang Other Configurations di bawah Running Parameters Configuration:
-
taskmanager.memory.jvm-overhead.fraction: Ukuran JVM Overhead sebagai pecahan dari total memori TaskManager. Default:0.1(10%). -
taskmanager.memory.jvm-overhead.max: Ukuran maksimum JVM Overhead. -
taskmanager.memory.jvm-overhead.min: Ukuran minimum JVM Overhead.
-
-
Klik OK.
Konfigurasikan sumber daya operator
Secara default, semua operator berbagi satu Slot Sharing Group, sehingga Anda tidak dapat mengonfigurasi sumber daya mereka secara individual. Untuk mengonfigurasi sumber daya operator tertentu, aktifkan Multiple SSG mode. Mode ini memberikan slot independen untuk setiap operator, sehingga Anda dapat mengonfigurasi sumber dayanya pada slot tersebut.
-
Pada tab Configuration, klik Edit di bagian Resources, dan atur Resource mode ke expert mode.
-
(Opsional) Jika paket sumber daya tidak ditampilkan, klik Get Plan Now.
Secara default, graf paket sumber daya yang dihasilkan menampilkan semua operator dalam satu kotak slot.
-
Nyalakan sakelar Multiple SSG mode lalu klik Re-fetch.
Tindakan ini memisahkan operator dalam grup berbagi menjadi slot individual.
-
Klik ikon Edit
pada kotak slot yang sesuai dengan operator target, lalu ubah sumber daya operator tersebut.Di kotak dialog Modify slot, Anda dapat mengonfigurasi parameter CPU, heap memory, off-heap memory, dan parallelism.
-
Klik OK.
Parallelism operator, strategi chaining, dan State TTL
Konfigurasi State TTL hanya didukung di Ververica Runtime (VVR) versi 8.0.7 dan yang lebih baru.
Anda dapat mengonfigurasi parallelism, strategi chaining, dan State TTL untuk masing-masing operator.
-
Klik ikon Expand
pada kotak VERTEX target.Setelah diperluas, kotak VERTEX menampilkan setiap node operator, nilai PARALLELISM-nya, dan ikon Edit di samping setiap operator.
CatatanAnda dapat mengklik ikon Edit
pada VERTEX untuk mengatur parallelism untuk semua operator dalam VERTEX tersebut secara batch. -
Klik ikon Edit
untuk operator tersebut. -
Konfigurasikan sumber daya operator.
Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Description
Parallelism
Parallelism untuk operator tersebut.
Chaining strategy
Chaining menghubungkan beberapa operator menjadi satu task, meningkatkan performa dengan mengurangi overhead transfer data dan serialisasi. Namun, Anda dapat memutus rantai untuk mendapatkan kontrol lebih detail atas alur eksekusi. Strategi berikut tersedia:
-
ALWAYS (Default): Operator selalu dapat dirantai dengan operator hulu dan hilir.
-
HEAD: Operator saat ini bertindak sebagai kepala rantai. Tidak dirantai dengan operator hulu tetapi tetap dirantai dengan operator hilir.
-
NEVER: Operator saat ini tidak dirantai dengan operator hulu maupun hilir.
State TTL
Anda dapat mengatur waktu kedaluwarsa dalam satuan detik, menit, jam, atau hari. Secara default, operator mewarisi waktu kedaluwarsa status pekerjaan, yang secara default adalah 1,5 hari. Untuk mengonfigurasi waktu kedaluwarsa tingkat pekerjaan, lihat Configure running parameters.
Catatan-
Fitur ini hanya didukung di Ververica Runtime (VVR) 8.0.7 dan yang lebih baru.
-
Konfigurasi TTL hanya didukung untuk operator stateful.
-
Kedaluwarsa status adalah mekanisme pembersihan perkiraan. Sistem tidak menjamin bahwa status yang kedaluwarsa langsung dihapus setelah TTL berakhir. Waktu pembersihan aktual bergantung pada pola akses status latar belakang dan kebijakan pembersihan.
-
-
Klik OK.
FAQ
Apakah mengatur parallelism sama dengan mengonsumsi jumlah CU yang sama?
Tidak. Parallelism mengacu pada jumlah task konkuren yang berjalan dalam suatu pekerjaan. CU (Compute Unit) adalah unit penagihan dan sumber daya yang digunakan oleh Realtime Compute for Apache Flink. Keduanya tidak memiliki hubungan 1:1.
Total konsumsi CU dihitung dengan rumus berikut:
Total konsumsi CU = Parallelism × CU per task
CU yang dikonsumsi setiap task ditentukan oleh spesifikasi sumber daya per slot yang dikonfigurasi untuk pekerjaan tersebut. Meningkatkan parallelism akan meningkatkan total konsumsi CU, tetapi kenaikannya sebanding dengan spesifikasi CU per task, bukan rasio sederhana 1:1.
Mengapa SET 'parallelism.default' tidak berlaku pada pekerjaan SQL?
Menggunakan SET 'parallelism.default' = 'N'; secara langsung dalam pernyataan pekerjaan SQL tidak efektif di Realtime Compute for Apache Flink. Untuk mengonfigurasi parallelism, gunakan salah satu metode berikut:
-
Atur parallelism dalam klausa
WITHpada pernyataan SQL yang relevan. -
Ubah parallelism di antarmuka pengeditan konfigurasi sumber daya pada halaman .
Apa yang harus saya lakukan ketika Print Sink atau operator Join menyebabkan sumber daya tidak mencukupi atau performa buruk?
Tindakan yang tepat bergantung pada gejala spesifiknya:
-
Print Sink menyebabkan kekurangan sumber daya TaskManager — Masalah ini tidak dapat diselesaikan hanya dengan penyetelan parameter. Evaluasi kebutuhan sumber daya Anda berdasarkan volume data aktual, verifikasi bahwa tipe field tabel sumber didefinisikan dengan benar (misalnya, gunakan
BIGINTalih-alihSTRINGjika sesuai), dan alokasikan sumber daya TaskManager yang cukup untuk mendukung overhead debugging Print Sink. -
Performa Join buruk meskipun pemanfaatan memori rendah — Tingkatkan jumlah CU. Namun, jika akar masalahnya adalah kesenjangan data, menambahkan lebih banyak sumber daya mungkin tidak menyelesaikan masalah. Selesaikan terlebih dahulu masalah kesenjangan data, lalu evaluasi apakah sumber daya tambahan diperlukan.
-
Pekerjaan sering restart dengan latensi end-to-end tinggi — Jika pekerjaan berada dalam fase sinkronisasi status penuh setelah restart tanpa status, coba atur jumlah slot ke 1, konfigurasikan parallelism yang sesuai secara terpisah, dan gunakan spesifikasi TaskManager 1-core 4 GiB dengan konkurensi moderat (misalnya, 10) untuk menguji dan mengoptimalkan performa.
Dokumen terkait
-
Untuk informasi tentang teknik optimasi sumber daya, lihat High-performance Flink SQL optimization techniques.
-
Alih-alih menyesuaikan sumber daya secara manual, Anda dapat mengaktifkan tuning performa otomatis. Untuk informasi lebih lanjut, lihat Configure automatic performance tuning.
-
Untuk mengonfigurasi pengaturan dasar pekerjaan, parameter running, dan logging, lihat Configure job deployment information.
-
Monitor kesehatan pekerjaan Anda dengan layanan Flink Advisor. Untuk informasi lebih lanjut, lihat Intelligent Job Diagnostics.