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.parallelismpada sink Paimon. Perhatikan bahwa perubahan paralelisme dapat memengaruhi penggunaan sumber daya.Menyesuaikan Interval Checkpoint
Konfigurasikan parameter
execution.checkpointing.intervaluntuk memperpanjang interval checkpoint. Untuk informasi lebih lanjut, lihat Bagaimana cara mengonfigurasi parameter untuk deployment yang sedang berjalan?PentingInterval 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'CatatanAnda 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-sizedi 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.parallelismpada 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) danlookup.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.parallelismpada 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.parallelismke 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-sizedi 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.parallelismpada 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.