全部产品
Search
文档中心

Realtime Compute for Apache Flink:Optimasi kinerja

更新时间:Jul 06, 2025

Topik ini menjelaskan cara mengoptimalkan tabel kunci utama dan tabel tambahan berskala Apache Paimon (Paimon) dalam berbagai skenario.

Batasan

Tabel Paimon hanya didukung di Realtime Compute for Apache Flink yang menggunakan Ververica Runtime (VVR) 8.0.5 atau versi lebih baru.

Tabel kunci utama

Penulisan data

Dalam banyak kasus, operasi penulisan pada tabel Paimon terhambat oleh kompaksi file kecil. Jika sebuah bucket dari tabel tersebut berisi banyak file kecil atau parameter changelog-producer diatur ke lookup untuk tabel tersebut, kompaksi file kecil harus diselesaikan selama proses checkpointing. Apabila kompaksi memerlukan waktu yang lama, checkpoint mungkin mengalami timeout, sehingga menyebabkan tekanan balik dan menurunkan efisiensi pemrosesan.

Untuk mengatasi masalah tersebut, gunakan metode berikut:

  • Menyesuaikan Paralelisme Sink Paimon

    Gunakan Petunjuk SQL untuk mengonfigurasi parameter sink.parallelism pada sink Paimon. Perhatikan bahwa perubahan paralelisme dapat memengaruhi penggunaan sumber daya.

  • Menyesuaikan Interval Checkpoint

    • Konfigurasikan parameter execution.checkpointing.interval untuk memperpanjang interval checkpoint. Untuk informasi lebih lanjut, lihat Bagaimana cara mengonfigurasi parameter untuk deployment yang sedang berjalan?

      Penting

      Interval checkpoint mempengaruhi latensi data di Paimon. Latensi data merujuk pada waktu yang diperlukan agar data yang ditulis tersedia untuk dikonsumsi. Jika bisnis Anda mengizinkan latensi data yang lebih tinggi, Anda dapat meningkatkan interval checkpoint untuk meningkatkan kinerja penulisan.

    • Tambahkan konfigurasi execution.checkpointing.max-concurrent-checkpoints: 3, yang menentukan bahwa hingga tiga checkpoint dapat berjalan secara bersamaan, sehingga mengurangi dampak ekor panjang pada checkpoint konkuren.

    • Pertimbangkan untuk menjalankan deployment batch.

  • Aktifkan Kompaksi Sepenuhnya Asinkron di Paimon

    Kompaksi sepenuhnya asinkron dari file kecil tidak memblokir checkpoint.

    Untuk mengaktifkan kompaksi sepenuhnya asinkron, konfigurasikan parameter berikut dengan menggunakan pernyataan ALTER TABLE atau Petunjuk SQL:

    'num-sorted-run.stop-trigger' = '2147483647',
    'sort-spill-threshold' = '10',
    'changelog-producer.lookup-wait' = 'false'

    Parameter

    Tipe

    Nilai default

    Deskripsi

    num-sorted-run.stop-trigger

    Integer

    5

    Jika jumlah file kecil dalam sebuah bucket melebihi nilai parameter ini, penulisan data dihentikan untuk bucket tersebut sampai file kecil dikompaksi. Ini mencegah peningkatan tak terkendali dalam jumlah file kecil akibat kompaksi yang lambat. Jumlah file kecil sangat mempengaruhi efisiensi konsumsi batch dan query ad hoc untuk Online Analytical Processing (OLAP), tetapi memiliki dampak minimal pada konsumsi aliran.

    Jika Anda menyetel parameter ini ke nilai yang terlalu besar, penulisan data akan terus berlanjut tanpa memperhatikan jumlah file kecil. Ini memungkinkan file kecil hanya dikompaksi ketika sumber daya mencukupi dan mencapai kompaksi sepenuhnya asinkron. Untuk memantau jumlah file kecil dalam sebuah bucket, kueri tabel files yang disediakan oleh Paimon.

    sort-spill-threshold

    Integer

    N/A

    Secara default, penggabungan sort digunakan untuk mengompaksi file kecil di memori. Pembaca sort setiap file kecil menempati sejumlah tertentu memori heap. Seiring dengan bertambahnya jumlah file kecil, memori heap mungkin menjadi tidak cukup.

    Anda dapat mengonfigurasi parameter ini untuk mencegah kekurangan memori heap. Jika jumlah file kecil melebihi nilai parameter ini, penggabungan sort diganti dengan pengurutan eksternal.

    changelog-producer.lookup-wait

    Boolean

    true

    Menentukan apakah akan menunggu pembuatan changelog saat checkpointing ketika parameter changelog-producer disetel ke lookup. Pembuatan changelog melibatkan kompaksi file kecil. Nilai valid:

    • true: menunggu pembuatan changelog. Anda dapat memperkirakan latensi pemrosesan berdasarkan kecepatan pembuatan checkpoint. Kemudian, Anda dapat menentukan apakah akan menambah sumber daya atau beralih ke kompaksi sepenuhnya asinkron.

    • false: tidak menunggu pembuatan changelog. Ini memungkinkan tugas konkuren yang telah menyelesaikan kompaksi file untuk melanjutkan pemrosesan data berikutnya, meningkatkan pemanfaatan CPU, dan tidak mempengaruhi changelog yang dihasilkan. Dalam hal ini, kecepatan pembuatan checkpoint tidak menunjukkan latensi pemrosesan data.

  • Mengubah Format File di Paimon

    Jika bisnis Anda berfokus pada konsumsi batch atau aliran dan tidak melibatkan query ad hoc untuk OLAP, konfigurasikan parameter berikut untuk mengubah format file data serta menonaktifkan pengumpulan statistik, sehingga meningkatkan efisiensi operasi penulisan.

    'file.format' = 'avro',
    'metadata.stats-mode' = 'none'
    Catatan

    Anda harus mengonfigurasi parameter di atas saat membuat tabel. Anda tidak dapat mengubah format file data tabel yang sudah ada.

  • Membatasi Ukuran File Sementara Lokal

    Tentukan write-buffer-spill.max-disk-size di Petunjuk SQL untuk membatasi ukuran maksimum file sementara lokal, sehingga mencegah konsumsi ruang disk yang berlebihan.

Konsumsi data

  • Menyesuaikan Paralelisme Sumber Paimon

    Gunakan Petunjuk SQL untuk mengonfigurasi parameter scan.parallelism pada sumber Paimon.

  • Gunakan Tabel yang Dioptimalkan untuk Pembacaan yang Disediakan oleh Paimon

    Selama konsumsi batch, fase pemindaian penuh konsumsi aliran, dan query ad hoc untuk OLAP, kinerja tabel sumber Paimon dipengaruhi terutama oleh file kecil. Tabel sumber Paimon perlu mengompaksi data dari file kecil di memori, dan sejumlah besar file kecil mengurangi efisiensi penggabungan sort selama kompaksi. File kecil juga mempengaruhi efisiensi operasi penulisan. Anda perlu menyeimbangkan efisiensi penulisan dan efisiensi konsumsi.

    Untuk meningkatkan efisiensi penulisan, konfigurasikan parameter seperti yang dijelaskan di Aktifkan kompaksi sepenuhnya asinkron. Jika Anda tidak perlu mengonsumsi data terbaru, Anda dapat menggunakan tabel yang dioptimalkan untuk pembacaan untuk meningkatkan efisiensi konsumsi.

  • Membatasi Ukuran Cache untuk Join Lookup

    Saat mengkueri data di tabel Paimon, konfigurasikan lookup.cache-max-disk-size (penggunaan disk maksimum) dan lookup.cache-file-retention (periode retensi file) di petunjuk SQL. Pengaturan ini mencegah file yang di-cache mengonsumsi penyimpanan berlebihan.

Tabel tambahan berskala

Penulisan data

Dalam banyak kasus, kinerja penulisan pada tabel tambahan berskala ditentukan oleh paralelisme sink dan bandwidth sistem file atau Object Storage Service (OSS). Untuk menghindari hambatan kinerja, pastikan sistem file yang digunakan memiliki bandwidth yang memadai untuk penulisan data. Selanjutnya, terapkan metode berikut untuk mengoptimalkan tabel tambahan berskala:

  • Menyesuaikan Paralelisme Sink Paimon

    Gunakan Petunjuk SQL untuk mengonfigurasi parameter sink.parallelism pada sink Paimon. Perhatikan bahwa perubahan paralelisme dapat memengaruhi penggunaan sumber daya.

  • Periksa Skew Data

    Data upstream tidak di-shuffle sebelum ditulis ke tabel tambahan berskala. Jika data upstream sangat miring, pemanfaatan sumber daya oleh penulis data tertentu mungkin rendah, sehingga mengurangi efisiensi penulisan. Untuk mengatasi masalah ini, atur parameter sink.parallelism ke nilai yang berbeda dari paralelisme node upstream. Anda dapat memverifikasi efek konfigurasi ini di konsol pengembangan Realtime Compute for Apache Flink. Jika operator sink dan node upstream-nya berada di subtask yang berbeda, data akan di-shuffle.

  • Membatasi Ukuran File Sementara Lokal

    Tentukan write-buffer-spill.max-disk-size di Petunjuk SQL untuk membatasi ukuran maksimum file sementara lokal, sehingga mencegah konsumsi ruang disk yang berlebihan.

Konsumsi data

  • Menyesuaikan Paralelisme Sumber Paimon

    Gunakan Petunjuk SQL untuk mengonfigurasi parameter scan.parallelism pada sumber Paimon.

  • Gunakan Pengurutan Data

    Urutan data sangat mempengaruhi efisiensi pemrosesan batch dan query ad hoc untuk OLAP. Anda dapat menggunakan pengurutan data untuk meningkatkan efisiensi query tabel tambahan berskala. Untuk menggunakan pengurutan data, Anda harus menyelesaikan konfigurasi yang diperlukan. Untuk informasi lebih lanjut, lihat Konfigurasi Manajemen Data. Anda juga harus menjalankan deployment Flink dalam mode batch dan mengonfigurasi parameter di bidang Entry Point Main Arguments.

    Sebagai contoh, jika Anda ingin mengurutkan data dalam partisi berdasarkan kolom tanggal dan jenis, tambahkan konfigurasi berikut di bidang Entry Point Main Arguments:

    compact
    --warehouse 'oss://your-bucket/data-warehouse'
    --database 'your_database'
    --table 'your_table'
    --order_strategy 'zorder'
    --order_by 'date,type'
    --partition 'dt=20240311,hh=08;dt=20240312,hh=09'
    --catalog_conf 'fs.oss.endpoint=oss-cn-hangzhou-internal.aliyuncs.com'
    --catalog_conf 'fs.oss.endpoint=oss-cn-beijing-internal.aliyuncs.com'
    --table_conf 'write-buffer-size=256 MB'
    --table_conf 'your_table.logRetentionDuration=7 days'

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    warehouse

    Direktori OSS yang berisi gudang data tempat katalog yang berisi tabel Paimon berada.

    database

    Nama database yang berisi tabel Paimon.

    table

    Nama tabel Paimon.

    order_strategy

    Strategi yang digunakan untuk mengurutkan data di tabel Paimon. Nilai valid:

    • zorder: direkomendasikan untuk query rentang di mana jumlah kolom filter kurang dari lima.

    • hilbert: direkomendasikan untuk query rentang di mana jumlah kolom filter lebih besar atau sama dengan lima.

    • order: direkomendasikan jika filter hanya berisi kondisi kesetaraan.

    order_by

    Kolom berdasarkan mana data diurutkan. Pisahkan beberapa kolom dengan koma (,).

    partition

    Partisi yang ingin Anda urutkan. Pisahkan beberapa partisi dengan titik koma (;). Jika tabel tidak dipartisi, abaikan parameter ini.

    catalog_conf

    Parameter dalam klausa WITH yang dikonfigurasi untuk katalog yang berisi tabel Paimon. Tentukan setiap parameter pada baris terpisah.

    table_conf

    Konfigurasi sementara tabel Paimon. Konfigurasi ini setara dengan Petunjuk SQL. Tentukan setiap parameter pada baris terpisah.