Topik ini menjawab beberapa pertanyaan umum tentang StarRocks.
Pengujian dan Evaluasi Bisnis
Pembelian
Penggunaan
Bagaimana fungsi COUNT bekerja di berbagai model data StarRocks?
Bagaimana cara mengurangi penggunaan disk direktori /mnt/disk1/starrocks/storage/trash/?
Apa yang harus dilakukan jika terjadi kesalahan saat membuat materialized view?
Mengapa gagal mengakses kluster StarRocks menggunakan port 8030 atau port 8040?
Bagaimana StarRocks mendistribusikan data ke disk data node backend (BE)?
Bagaimana cara mereset kluster jika terjadi pengecualian data?
Apa saja persyaratan StarRocks untuk sumber daya perangkat keras?
Konfigurasi Mesin
Server untuk node backend (BE) direkomendasikan memiliki minimal 16 inti CPU dan 64 GB memori, sedangkan server untuk node frontend (FE) minimal 8 inti CPU dan 16 GB memori.
Dalam lingkungan produksi, server untuk node FE biasanya memiliki 16 inti CPU, 32 hingga 64 GB memori, serta disk NVMe dengan kapasitas 200 hingga 500 GB.
Disk
HDD dan SSD dapat digunakan.
Kapasitas disk dapat diperkirakan berdasarkan rasio kompresi sebesar 3 dan penggunaan disk antara 70% hingga 75%.
Jika Anda ingin mengimpor data Hive dalam format Parquet atau ORC ke StarRocks, perkirakan kapasitas disk berdasarkan rasio kompresi 1:1.
Sebagai contoh, jika ukuran data Hive yang ingin diimpor adalah 3 TB, maka ukuran data yang diimpor ke StarRocks juga akan menjadi 3 TB.
CPU
CPU harus mendukung set instruksi Advanced Vector Extensions 2 (AVX2). Jalankan perintah
cat /proc/cpuinfo |grep avx2untuk memeriksa apakah AVX2 didukung.Mesin eksekusi vektor penuh memanfaatkan daya pemrosesan CPU lebih efisien jika CPU mendukung set instruksi tersebut. Jika tidak, disarankan untuk mengganti server.
Jaringan
Disarankan untuk menggunakan kartu antarmuka jaringan (NIC) 10GE dan switch 10GE.
Apa saja persyaratan StarRocks untuk konfigurasi perangkat lunak?
Untuk informasi lebih lanjut, lihat Konfigurasi Parameter.
Berapa banyak replika yang perlu saya tentukan dalam lingkungan produksi?
Dalam kebanyakan kasus, diperlukan 2 atau 3 replika dalam lingkungan produksi. Direkomendasikan untuk menentukan 3 replika.
Bagaimana cara menentukan jumlah partisi dari sebuah tabel?
Partisi yang tepat membantu mengurangi jumlah data yang harus dipindai secara efektif.
Dalam kebanyakan kasus, Anda dapat memilih kunci partisi berdasarkan kebutuhan bisnis. Sebagai contoh, kolom waktu atau wilayah dapat digunakan sebagai kunci partisi.
Jika Anda memerlukan pembuatan partisi otomatis, Anda dapat mengaktifkan partisi dinamis.
Bagaimana cara menentukan jumlah tablet?
Anda dapat memilih kolom dengan kardinalitas tinggi sebagai kunci bucketing untuk mencegah skew data antar tablet.
Jika ada kolom ID unik, disarankan untuk memilih kolom ID unik sebagai kunci bucketing.
Jika data tidak dapat didistribusikan secara merata menggunakan satu kolom bucketing, Anda dapat memilih beberapa kolom sebagai kunci bucketing. Namun, hindari penggunaan jumlah kolom yang berlebihan sebagai kunci bucketing.
Anda dapat memperkirakan ukuran optimal tablet berdasarkan informasi berikut. Jumlah tablet dapat dihitung berdasarkan item berikut dan total data.
Untuk data mentah seperti CSV, ukuran tablet berkisar antara 1 GB hingga 10 GB.
Untuk data dalam format Parquet, ukuran tablet sekitar 1 GB.
Jika ingin memanfaatkan sepenuhnya sumber daya mesin, gunakan rumus berikut untuk menghitung jumlah tablet:
Jumlah node BE × Jumlah inti CPU/2.
Bagaimana cara menentukan kunci pengurutan?
Kunci pengurutan harus dirancang berdasarkan karakteristik kueri data.
Anda dapat memilih kolom yang sering digunakan sebagai kondisi filter dan dalam klausa Group BY sebagai kunci pengurutan untuk mempercepat kueri.
Jika banyak kueri titik sering dilakukan, atur kolom ID kueri titik sebagai kolom pertama dari kunci pengurutan.
Sebagai contoh, jika pernyataan kueri adalah
select sum(revenue) from lineorder where user_id='aaa100';dan konkurensi tinggi terjadi, disarankan untuk mengatur kolomuser_idsebagai kolom pertama dari kunci pengurutan.Jika kueri agregat dan pemindaian utama dilakukan, disarankan untuk mengatur kolom dengan kardinalitas rendah terlebih dahulu.
Sebagai contoh, jika pernyataan kueri adalah
select region, nation, count(*) from lineorder_flat group by region, nation, disarankan untuk menentukan kolomregionsebagai kolom pertama dan kolomnationsebagai kolom kedua.
Bagaimana cara memilih tipe data yang tepat?
Disarankan untuk memilih tipe data dengan presisi tinggi. Sebagai contoh, pilih tipe data integer daripada string, dan pilih tipe data INT daripada BIGINT. Tipe data dengan presisi tinggi membantu memanfaatkan performa database secara maksimal.
Bagaimana cara melakukan penyetelan parameter ketika metode impor Routine Load memiliki masalah performa?
Kebijakan penyetelan parameter
Jika metode impor Routine Load memiliki masalah performa, Anda dapat melakukan penyetelan parameter dari dimensi berikut:
Siklus Penjadwalan Pekerjaan
Anda dapat memodifikasi parameter max_batch_interval untuk mempersingkat siklus penjadwalan dan mempercepat konsumsi data. Namun, jika siklus penjadwalan dipersingkat, lebih banyak sumber daya CPU mungkin dikonsumsi.
PentingSiklus penjadwalan minimum adalah 5 detik.
Paralelisme Pekerjaan
Jika sejumlah besar partisi dan node BE terlibat, Anda dapat mengonfigurasi parameter berikut untuk mempercepat eksekusi pekerjaan. Namun, jika derajat paralelisme (DOP) ditingkatkan, lebih banyak sumber daya CPU mungkin dikonsumsi.
max_routine_load_task_concurrent_num
desired_concurrent_number
Pekerjaan Routine Load dibagi menjadi beberapa tugas berdasarkan jumlah partisi dalam topik Kafka dan didistribusikan ke beberapa node BE untuk dieksekusi berdasarkan jumlah node BE. DOP pekerjaan mengacu pada jumlah tugas yang dibagi dari pekerjaan Routine Load.
Gunakan rumus berikut untuk menghitung DOP pekerjaan.
concurrent_num = Min( Min( partition_num, Min( desired_concurrent_num, alive_be_num ) ),Config.max_routine_load_task_concurrent_num )Ukuran Batch Impor
routine_load_task_consume_second: Anda dapat mempercepat konsumsi data dengan meningkatkan durasi operasi baca.
max_routine_load_batch_size: Anda dapat mempercepat konsumsi data dengan meningkatkan jumlah data dalam operasi baca.
Gunakan log berikut untuk menentukan apakah parameter max_routine_load_batch_size disetel ke nilai yang lebih rendah. Nilai bidang
left_bytesdalam log harus tidak kurang dari 0, yang menunjukkan bahwa jumlah data yang dibaca pada satu waktu tidak melebihi nilai parameter max_routine_load_batch_size. Jika tidak, parameter max_routine_load_batch_size disetel ke nilai yang lebih rendah.I0325 20:27:50.410579 15259 data_consumer_group.cpp:131] consumer group done: 41448fb1a0ca59ad-30e34dabfa7e47a0. consume time(ms)=3261, received rows=179190, received bytes=9855450, eos: 1, left_time: -261, left_bytes: 514432550, blocking get time(us): 3065086, blocking put time(us): 24855 1
Parameter pekerjaan Routine Load
Parameter | Tipe | Nilai default | Deskripsi |
max_routine_load_job_num | fe.conf | 100 | Jumlah maksimum pekerjaan Routing Load dalam status NEED_SCHEDULE, RUNNING, atau PAUSED. |
max_routine_load_task_concurrent_num | fe.conf | 5 | DOP maksimum pekerjaan Routine Load. |
max_routine_load_task_num_per_be | fe.conf | 5 | Jumlah maksimum pekerjaan Routine Load yang dapat dialokasikan ke satu node BE. |
max_routine_load_batch_size | fe.conf | 500 MB | Jumlah maksimum data yang dapat dibaca dari Kafka pada satu waktu. |
routine_load_task_consume_second | fe.conf | 3 | Periode maksimum yang digunakan untuk membaca data dari Kafka pada satu waktu. |
routine_load_task_timeout_second | fe.conf | 15 | Periode timeout selama pekerjaan Routine Load dapat berjalan. |
max_consumer_num_per_group | be.conf | 3 | Jumlah maksimum konsumen dalam grup konsumen. |
desired_concurrent_number | properties | 3 | DOP yang diharapkan dari pekerjaan Routine Load. DOP aktual dihitung berdasarkan rumus berikut: |
max_batch_interval | properties | 10s | Siklus penjadwalan pekerjaan Routine Load. |
max_batch_rows | properties | 200000 | Parameter ini hanya digunakan untuk menentukan rentang jendela deteksi kesalahan. Rentang jendela dihitung dengan mengalikan 10 dan nilai parameter ini. |
max_error_number | properties | 0 | Jumlah maksimum baris kesalahan yang diizinkan dalam jendela sampling. Nilai harus lebih besar dari atau sama dengan 0. Nilai default 0 menentukan bahwa tidak ada baris kesalahan yang diizinkan. Penting Baris kesalahan tidak mencakup baris yang difilter oleh klausa WHERE. |
strict_mode | properties | true | Menentukan apakah mode ketat diaktifkan. Secara default, mode ketat diaktifkan. Setelah Anda mengaktifkan mode ketat, jika kolom data mentah diubah dari NOT NULL menjadi NULL, data tersebut difilter. |
Bagaimana cara memilih model data?
StarRocks menyediakan empat model data berikut. Anda dapat memilih model data berdasarkan kebutuhan bisnis Anda.
Model data | Skenario |
kunci duplikat |
|
Model kunci agregat |
|
kunci unik | Data diperbarui untuk analisis real-time. |
kunci primer | Data diperbarui untuk analisis real-time. Jika beberapa kolom diperbarui, kami merekomendasikan agar jumlah kolom yang diperbarui tidak lebih dari 200. |
Bagaimana fungsi COUNT bekerja di berbagai model data StarRocks?
StarRocks memiliki empat model data, yaitu kunci duplikat, kunci unik, kunci agregat, dan model kunci primer. Cara kerja fungsi COUNT bervariasi berdasarkan model data yang berbeda. Berikut adalah perbedaan tersebut:
Model kunci duplikat: Model data ini tidak memerlukan operasi penggabungan, sehingga hasil fungsi COUNT dikembalikan dengan cepat.
Model kunci unik dan kunci agregat: Kedua model data ini memerlukan operasi penggabungan pada beberapa versi data, sehingga hasil fungsi COUNT dikembalikan lebih lambat daripada model kunci duplikat.
Secara teori, jika kolom kunci bertipe STRING, hasil fungsi COUNT dikembalikan lebih lambat.
Model kunci primer: Model data ini mendukung indeks kunci primer dan operasi penghapusan pada vektor saat data dibaca. Model ini tidak memerlukan operasi penggabungan. Akibatnya, hasil fungsi COUNT dikembalikan lebih cepat daripada model kunci unik dan kunci agregat.
Disarankan untuk memilih model kunci primer jika data Anda melibatkan operasi pembaruan.
Bagaimana cara mengurangi penggunaan disk direktori /mnt/disk1/starrocks/storage/trash/?
Data yang dihapus disimpan dalam direktori /mnt/disk1/starrocks/storage/trash/. Untuk mengurangi penggunaan disk direktori ini, Anda dapat mengurangi nilai parameter trash_file_expire_time_sec dalam file be.conf untuk mempersingkat periode retensi direktori sampah. Periode retensi default adalah 259.200 detik, yang setara dengan 72 jam.
Apa yang harus saya lakukan jika terjadi kesalahan saat membuat materialized view?
Deskripsi Masalah: Gambar berikut menunjukkan pesan kesalahan.

Solusi:
Jalankan pernyataan berikut:
show proc "/cluster_balance";danshow proc "/statistic";.Periksa apakah tablet sedang rebalanced.
Jika ya, tunggu hingga eksekusi selesai.
Jika tidak, Anda dapat menjalankan pernyataan
set disable_balance=truedan membuat materialized view.
Apa yang harus saya lakukan jika terjadi kueri data lambat?
Disarankan untuk menggunakan solusi berikut:
Aktifkan pelaporan profil dan lihat informasi profil pada antarmuka pengguna (UI) StarRocks.
Anda dapat menjalankan pernyataan
SET is_report_success = true;untuk mengaktifkan pelaporan profil.Metode Pemecahan Masalah Umum:
Atur paralelisme.
Pipeline
SET pipeline_dop = 8; SET enable_pipeline_engine = true;Mesin Non-Pipeline
SET enable_pipeline_engine=false; SET parallel_fragment_exec_instance_num=8;
Lihat distribusi data tablet.
show data xxx;CatatanUkuran tablet yang direkomendasikan adalah 1 hingga 10 GB.
Lihat tabel yang dibuat.
Anda dapat menentukan waktu tunggu I/O berdasarkan informasi profil. Jika waktu tunggu tinggi, Anda dapat menghapus indeks yang tidak diperlukan, seperti indeks bitmap yang sering dibuat.
Lihat model data tabel dan pilih model data yang sesuai. Sebagai contoh, dalam model kunci unik, pushdown tidak bekerja sebelum fase kompaksi selesai. Hal ini menyebabkan kueri lambat.
Mengapa saya gagal mengakses kluster StarRocks menggunakan port 8030 atau port 8040?
Untuk kluster StarRocks E-MapReduce (EMR) V5.8.0, EMR V3.42.0, atau versi minor lebih awal dari EMR V5.8.0 atau EMR V3.42.0, nomor port load_url adalah 8030 dan nomor port webserver_port adalah 8040. Namun, untuk kluster StarRocks EMR V5.9.0 atau versi minor lebih baru, atau EMR V3.43.0 atau versi minor lebih baru, nomor port load_url adalah 18030 dan nomor port webserver_port adalah 18040. Anda harus memilih port yang ingin digunakan untuk mengakses kluster StarRocks berdasarkan versi kluster Anda.
Anda dapat menjalankan perintah show frontends untuk melihat nomor port aktual kluster StarRocks.
Di wilayah mana EMR StarRocks tersedia?
StarRocks tersedia di semua wilayah.
Bagaimana StarRocks mendistribusikan data ke disk data node BE?
Secara default, empat SSD ditingkatkan PL1 dikonfigurasikan untuk setiap node BE. StarRocks mendistribusikan data secara merata ke node BE berdasarkan beban dan mekanisme bucket. Data dalam tablet dan replika yang sama disimpan di disk yang sama.
Bagaimana cara mereset kluster jika terjadi pengecualian data?
Setelah melakukan operasi berikut, data kluster akan dihapus. Lanjutkan dengan hati-hati.
Hentikan layanan yang diterapkan pada node FE dan BE.
Hapus direktori tempat metadata node FE disimpan.
Lihat file fe.conf dalam direktori
/opt/apps/STARROCKS/starrocks-current/fe/conf/dan dapatkan direktori konfigurasimeta_dir.Hapus folder bdb dari direktori konfigurasi.
Hapus folder image dalam direktori konfigurasi.
Hapus data dan metadata BE.
Lihat file be.conf dalam direktori
/opt/apps/STARROCKS/starrocks-current/be/conf/dan dapatkan direktori konfigurasistorage_root_path.Hapus semua folder dan file kecuali folder data dan meta dari direktori konfigurasi.
Hapus folder data dan meta dalam direktori konfigurasi.
CatatanDirektori konfigurasi mungkin ada di beberapa jalur. Anda harus melakukan operasi di atas untuk setiap jalur.
Mulai ulang layanan yang diterapkan pada node FE dan BE.
Bagaimana cara melihat log node FE dan BE?
Log node FE dan BE disimpan di direktori berikut:
Node FE
/opt/apps/STARROCKS/starrocks-current/fe/log/
/mnt/disk1/log/starrocks/
Node BE
/opt/apps/STARROCKS/starrocks-current/be/log/
/mnt/disk1/log/starrocks/
Setelah node tugas ditambahkan ke kluster StarRocks, node tersebut tidak digunakan untuk menjalankan tugas. Mengapa?
Deskripsi masalah
Setelah tiga node tugas ditambahkan ke kluster StarRocks sebagai node komputasi (CN), node yang ditambahkan tidak digunakan untuk menjalankan tugas. Beban kerja pada node BE tinggi. Namun, node tugas baru yang ditambahkan tidak sepenuhnya dimanfaatkan, dan data pemantauan menunjukkan bahwa beban kerja pada node tugas rendah.
Penyebab
Untuk kluster StarRocks yang mengadopsi arsitektur integrasi komputasi-penyimpanan, node CN hanya dapat digunakan untuk mengkueri data dari tabel eksternal. Dalam skenario di mana Anda ingin mengkueri data dari tabel internal, node BE selalu digunakan. Akibatnya, node tugas baru yang ditambahkan tidak sepenuhnya dimanfaatkan.
Solusi
Sebelum menjalankan tugas kueri, jalankan pernyataan SQL berikut untuk memungkinkan tugas dijalankan secara prioritas pada CN:
SET GLOBAL prefer_compute_node=true;Bagaimana cara melihat kata sandi kluster StarRocks?
Kata sandi kluster StarRocks mengacu pada kata sandi yang Anda atur untuk pengguna root saat membuat kluster StarRocks. Jika Anda lupa kata sandi, Anda dapat menyetel ulang kata sandi. Untuk informasi lebih lanjut, lihat bagian Bagaimana cara menyetel ulang kata sandi saya? dari topik "Masuk ke Kluster".