Untuk memenuhi kebutuhan berbagai skenario bisnis, StarRocks mendukung beberapa model data. Data yang disimpan di StarRocks perlu diorganisasikan berdasarkan model tertentu. Topik ini menjelaskan konsep dasar, prinsip, konfigurasi sistem, dan skenario dari metode impor yang berbeda. Praktik terbaik dan FAQ juga disediakan dalam topik ini.
Informasi latar belakang
Fitur impor data memungkinkan Anda membersihkan dan mengonversi data mentah sesuai dengan model yang relevan serta mengimpor data ke StarRocks untuk kueri dan penggunaan lebih lanjut. StarRocks mendukung berbagai metode impor. Anda dapat memilih metode impor yang sesuai berdasarkan volume data atau frekuensi impor.
Gambar berikut menunjukkan sumber data yang berbeda dan metode impor yang sesuai yang didukung oleh StarRocks. 
Anda dapat memilih metode impor yang tepat berdasarkan sumber data:
Impor data offline: Jika sumber datanya adalah Hive atau Hadoop Distributed File System (HDFS), kami sarankan menggunakan metode Broker Load. Untuk informasi lebih lanjut, lihat Broker Load. Jika sejumlah besar tabel data perlu diimpor, Anda dapat menggunakan tabel eksternal Hive, meskipun performanya lebih rendah dibandingkan dengan metode Broker Load. Namun, migrasi data tidak diperlukan dalam kasus ini. Jika satu tabel berisi sejumlah besar data, atau Anda memerlukan deduplikasi presisi untuk menggunakan tabel sebagai kamus data global, Anda dapat menggunakan metode Spark Load. Untuk informasi lebih lanjut, lihat Spark Load.
Impor data secara real-time: Setelah menyinkronkan data log dan log biner database ke Kafka, kami sarankan menggunakan metode Routine Load untuk mengimpor data ke StarRocks. Untuk informasi lebih lanjut, lihat Routine Load. Jika diperlukan join multi-tabel dan ETL (ekstraksi, transformasi, dan pemuatan), Anda dapat menggunakan konektor Flink untuk memproses data terlebih dahulu dan menulis data ke StarRocks dengan menggunakan metode Stream Load. Untuk informasi lebih lanjut, lihat Flink connector dan Stream Load.
Impor data ke StarRocks melalui program: Kami sarankan menggunakan metode Stream Load. Untuk informasi lebih lanjut, lihat Stream Load. Anda dapat merujuk pada demo dalam Java atau Python di topik Stream Load.
Impor file teks: Kami sarankan menggunakan metode Stream Load. Untuk informasi lebih lanjut, lihat Stream Load.
Impor data dari MySQL: Kami sarankan menggunakan tabel eksternal MySQL dan menjalankan pernyataan
insert into new_table select * from external_tableuntuk mengimpor data.Impor data di dalam StarRocks: Kami sarankan menggunakan metode INSERT INTO dan penjadwal eksternal untuk menerapkan pemrosesan ETL sederhana. Untuk informasi lebih lanjut, lihat INSERT INTO.
Gambar dan beberapa informasi dalam topik ini berasal dari Ikhtisar Pemuatan Data dari StarRocks open source.
Catatan Penggunaan
Koneksi program sering digunakan untuk mengimpor data ke StarRocks. Perhatikan hal-hal berikut saat mengimpor data:
Pilih metode impor yang sesuai. Anda dapat memilih metode impor berdasarkan volume data, frekuensi impor, atau lokasi sumber data.
Sebagai contoh, jika data mentah disimpan di HDFS, Anda dapat menggunakan metode Broker Load untuk mengimpor data.
Tentukan protokol untuk metode impor. Jika menggunakan metode Broker Load, sistem eksternal harus diizinkan untuk mengirimkan dan memantau pekerjaan impor secara berkala menggunakan protokol MySQL.
Tentukan mode impor data. Impor data diklasifikasikan menjadi mode sinkron dan asinkron. Dalam mode asinkron, sistem eksternal harus menjalankan perintah untuk memantau status impor dan menentukan apakah impor berhasil berdasarkan hasil perintah tersebut.
Atur kebijakan pembuatan label. Kebijakan pembuatan label harus memastikan bahwa data yang diimpor dalam setiap pekerjaan bersifat unik dan statis.
Pastikan pengiriman tepat sekali. Sistem eksternal menjamin pengiriman setidaknya sekali untuk impor data, sedangkan mekanisme label StarRocks memastikan pengiriman maksimal sekali. Dengan cara ini, pengiriman tepat sekali dapat dicapai untuk keseluruhan impor data.
Istilah
Istilah | Deskripsi |
pekerjaan impor | Membaca data dari sumber data yang ditentukan, membersihkan dan mengonversi data, lalu mengimpor data ke StarRocks. Setelah data diimpor, data tersebut dapat diquery. |
label | Mengidentifikasi pekerjaan impor. Semua pekerjaan impor memiliki label. Label dapat ditentukan oleh Anda atau dibuat otomatis oleh StarRocks. Label bersifat unik dalam sebuah database. Setiap label hanya dapat digunakan untuk satu pekerjaan impor yang berhasil. Setelah pekerjaan impor selesai, Anda tidak dapat menggunakan kembali label dari pekerjaan impor ini untuk mengirimkan pekerjaan impor lainnya. Hanya label dari pekerjaan impor yang gagal yang dapat digunakan kembali. Mekanisme ini membantu memastikan bahwa data yang terkait dengan label tertentu hanya dapat diimpor sekali. Dengan cara ini, semantik pengiriman maksimal sekali diimplementasikan. |
atomicity | Semua metode pemuatan yang disediakan oleh StarRocks dapat menjamin atomicity. Atomicity berarti bahwa data yang memenuhi syarat dalam suatu pekerjaan harus semua berhasil dimuat, atau tidak ada data yang memenuhi syarat yang berhasil dimuat. Tidak mungkin terjadi bahwa sebagian data yang memenuhi syarat dimuat sementara data lainnya tidak. Perhatikan bahwa data yang memenuhi syarat tidak termasuk data yang difilter karena masalah kualitas seperti kesalahan konversi tipe data. |
Protokol MySQL dan HTTP | StarRocks mendukung dua protokol komunikasi yang dapat digunakan untuk mengirimkan pekerjaan impor: MySQL dan HTTP. |
Broker Load | Menggunakan broker yang telah diterapkan untuk membaca data dari sumber data eksternal seperti HDFS dan mengimpor data ke StarRocks. Proses broker menggunakan sumber daya komputasinya untuk memproses dan mengimpor data. |
Spark Load | Memproses ulang data dengan menggunakan sumber daya eksternal seperti Spark untuk menghasilkan file perantara. StarRocks membaca file perantara dan mengimpor file tersebut. Spark Load adalah metode impor asinkron. Anda perlu membuat pekerjaan impor dengan menggunakan protokol MySQL dan memeriksa hasil impor dengan menjalankan perintah tertentu. |
FE | Node frontend (FE) adalah node metadata dan penjadwalan StarRocks. Dalam proses impor data, node FE digunakan untuk menghasilkan rencana eksekusi impor dan menjadwalkan pekerjaan impor. |
BE | Node backend (BE) adalah node komputasi dan penyimpanan StarRocks. Node BE digunakan untuk melakukan operasi ETL pada data dan menyimpan data. |
tablet | Shard logis dari tabel StarRocks. Sebuah tabel dapat dibagi menjadi beberapa tablet berdasarkan aturan partisi dan bucket. Untuk informasi lebih lanjut, lihat Distribusi Data. |
Cara Kerja
Gambar berikut menunjukkan bagaimana pekerjaan impor dijalankan. 
Tabel berikut menggambarkan lima tahap pekerjaan impor.
Tahap | Deskripsi |
PENDING | Opsional. Pekerjaan dikirimkan dan menunggu untuk dijadwalkan oleh node FE. Tahap ini termasuk untuk pekerjaan yang menggunakan metode impor Broker Load atau Spark Load. |
ETL | Opsional. Data diproses sebelumnya, termasuk pembersihan, partisi, pengurutan, dan agregasi. Spark Load mencakup langkah ini. Dia menggunakan sumber daya komputasi eksternal Spark untuk menyelesaikan ETL. |
LOADING | Data dibersihkan dan dikonversi pertama kali dan dikirim ke node BE untuk diproses. Setelah semua data diimpor, data tersebut berada dalam antrian dan menunggu untuk diberlakukan. Pada saat ini, status pekerjaan tetap LOADING. |
FINISHED | Ketika semua data diberlakukan, status pekerjaan menjadi FINISHED. Pada saat ini, data dapat diquery. FINISHED adalah status akhir pekerjaan. |
CANCELLED | Sebelum status pekerjaan menjadi FINISHED, Anda dapat membatalkan pekerjaan kapan saja. StarRocks juga dapat secara otomatis membatalkan pekerjaan jika terjadi kesalahan impor. CANCELLED juga merupakan status akhir pekerjaan. |
Tabel berikut menggambarkan tipe data yang didukung.
Tipe | Deskripsi |
Bilangan bulat | TINYINT, SMALLINT, INT, BIGINT, dan LARGEINT. Contoh: 1, 1000, dan 1234. |
Titik mengambang | FLOAT, DOUBLE, dan DECIMAL. Contoh: 1.1, 0.23, dan 0.356. |
Tanggal | DATE dan DATETIME. Contoh: 2017-10-03 dan 2017-06-13 12:34:03. |
String | CHAR dan VARCHAR. Contoh: "Saya seorang siswa" dan "a". |
Metode Impor
Untuk memenuhi berbagai persyaratan impor data, StarRocks menyediakan lima metode untuk mengimpor data dari berbagai sumber data, seperti HDFS, Kafka, dan file lokal, atau dengan cara yang berbeda. StarRocks mendukung mode impor sinkron dan asinkron.
Semua metode impor mendukung format data CSV. Broker Load juga mendukung format data Parquet dan ORC.
Metode Impor Data
Metode Impor | Deskripsi | Mode Impor |
Broker Load | Menggunakan proses broker untuk membaca data dari sumber eksternal, dan membuat pekerjaan untuk mengimpor data ke StarRocks dengan menggunakan protokol MySQL. Pekerjaan yang dikirimkan dijalankan secara asinkron. Perintah Metode impor Broker Load berlaku untuk skenario berikut: Data yang akan diimpor berada dalam sistem penyimpanan yang dapat diakses oleh proses broker, seperti HDFS. Volume data impor berkisar antara puluhan GB hingga ratusan GB. Untuk informasi lebih lanjut, lihat Broker Load. | Asinkron |
Spark Load | Memproses ulang data yang diimpor dengan menggunakan sumber daya eksternal seperti Spark. Ini meningkatkan kinerja StarRocks dalam mengimpor sejumlah besar data dan menghemat sumber daya komputasi kluster StarRocks. Spark Load adalah metode impor asinkron. Anda perlu membuat pekerjaan impor dengan menggunakan protokol MySQL dan menjalankan perintah Spark Load cocok untuk skenario di mana sejumlah besar data dipindahkan ke StarRocks untuk pertama kalinya, dan data tersebut berada dalam sistem penyimpanan yang dapat diakses oleh kluster Spark, seperti HDFS. Terabyte data dapat diimpor. Untuk informasi lebih lanjut, lihat Spark Load. | Asinkron |
Stream Load | Metode impor sinkron. Anda dapat mengirim permintaan HTTP untuk mengimpor file lokal atau aliran data ke StarRocks dan menunggu sistem mengembalikan status hasil impor. Anda dapat menentukan apakah impor berhasil berdasarkan hasil pengembalian. Stream Load berlaku untuk mengimpor file lokal atau mengimpor data dari aliran data dengan menggunakan program. Untuk informasi lebih lanjut, lihat Stream Load. | Sinkron |
Routine Load | Mengimpor data secara otomatis dari sumber data yang ditentukan. Anda dapat mengirimkan pekerjaan impor rutin dengan menggunakan protokol MySQL. Kemudian, thread penduduk dibuat untuk terus membaca data dari sumber data, seperti Kafka, dan mengimpor data ke StarRocks. Untuk informasi lebih lanjut, lihat Routine Load. | Asinkron |
INSERT INTO | Metode impor ini digunakan dengan cara yang mirip dengan pernyataan INSERT dalam MySQL. StarRocks memungkinkan Anda menggunakan pernyataan | Sinkron |
Mode Impor
Jika Anda mengimpor data menggunakan program eksternal, Anda harus memilih mode impor yang paling sesuai dengan kebutuhan bisnis Anda sebelum menentukan metode impor.
Mode Sinkron
Dalam mode sinkron, setelah sistem eksternal membuat pekerjaan impor, StarRocks menjalankan pekerjaan tersebut secara sinkron. Ketika pekerjaan impor selesai, StarRocks mengembalikan hasil impor. Sistem eksternal dapat menentukan apakah impor berhasil berdasarkan hasil pengembalian.
Prosedur:
Sistem eksternal membuat pekerjaan impor.
StarRocks mengembalikan hasil impor.
Sistem eksternal menentukan hasil impor. Jika pekerjaan impor gagal, pekerjaan impor lain dapat dibuat.
Mode Asinkron
Dalam mode asinkron, setelah sistem eksternal membuat pekerjaan impor, StarRocks mengembalikan hasil yang menunjukkan bahwa pekerjaan telah dibuat. Ini tidak berarti bahwa data telah diimpor. Pekerjaan impor dijalankan secara asinkron. Setelah pekerjaan dibuat, sistem eksternal memeriksa status pekerjaan impor dengan menjalankan perintah tertentu. Jika pekerjaan impor gagal dibuat, sistem eksternal dapat menentukan apakah akan membuat pekerjaan impor lain berdasarkan informasi kegagalan.
Prosedur:
Sistem eksternal membuat pekerjaan impor.
StarRocks mengembalikan hasil pembuatan pekerjaan impor.
Sistem eksternal menentukan apakah akan melanjutkan ke langkah berikutnya berdasarkan hasil pengembalian. Jika pekerjaan impor dibuat, lanjutkan ke Langkah 4. Jika pekerjaan impor gagal dibuat, kembali ke Langkah 1 dan buat pekerjaan impor lagi.
Sistem eksternal memeriksa status pekerjaan impor hingga status berubah menjadi FINISHED atau CANCELLED.
Skenario
Skenario | Deskripsi |
Impor data dari HDFS | Jika data yang akan diimpor disimpan di HDFS dan volume data berkisar antara puluhan GB hingga ratusan GB, Anda dapat menggunakan metode Broker Load untuk mengimpor data ke StarRocks. Dalam hal ini, sumber data HDFS harus dapat diakses oleh proses broker yang telah diterapkan. Pekerjaan impor dijalankan secara asinkron. Perintah Jika data yang akan diimpor disimpan di HDSF, dan terabyte data perlu diimpor, Anda dapat menggunakan metode Spark Load untuk mengimpor data ke StarRocks. Dalam hal ini, sumber data HDFS harus dapat diakses oleh proses Spark yang telah diterapkan. Pekerjaan impor dijalankan secara asinkron. Perintah Metode Broker Load atau Spark Load mendukung impor data dari sumber data eksternal lainnya hanya jika proses broker atau Spark dapat membaca data dari sumber data tersebut. |
Impor file lokal | Jika data Anda disimpan dalam file lokal dan volume datanya kurang dari 10 GB, Anda dapat menggunakan metode Stream Load untuk dengan cepat mengimpor data ke StarRocks. Pekerjaan impor dibuat dengan menggunakan protokol HTTP, dan pekerjaan impor dijalankan secara sinkron. Anda dapat menentukan apakah impor berhasil berdasarkan hasil pengembalian permintaan HTTP. |
Impor data dari Kafka | Jika Anda ingin mengimpor data dari sumber data streaming seperti Kafka ke StarRocks secara real-time, Anda dapat menggunakan metode Routine Load. Anda dapat membuat pekerjaan impor rutin dengan menggunakan protokol MySQL. StarRocks terus membaca dan mengimpor data dari Kafka. |
Impor data dengan menggunakan metode INSERT INTO | Anda dapat menggunakan metode Pernyataan |
Batasan Memori
Anda dapat mengatur parameter untuk membatasi penggunaan memori oleh satu pekerjaan impor. Ini mencegah pekerjaan impor menghabiskan terlalu banyak memori dan menyebabkan kesalahan kehabisan memori (OOM). Cara yang digunakan untuk membatasi penggunaan memori oleh pekerjaan yang mengadopsi metode impor yang berbeda bervariasi. Untuk informasi lebih lanjut, lihat topik yang sesuai untuk setiap metode impor.
Dalam kebanyakan kasus, pekerjaan impor dijalankan pada beberapa node BE. Anda dapat mengatur parameter untuk membatasi penggunaan memori oleh pekerjaan impor pada satu node BE, bukan pada seluruh kluster. Selain itu, Anda dapat menentukan ukuran memori maksimum yang dapat digunakan oleh pekerjaan impor pada setiap node BE. Untuk informasi lebih lanjut, lihat bagian Konfigurasi Sistem Umum dari topik ini. Konfigurasi sistem menetapkan batas atas untuk penggunaan memori keseluruhan dari semua pekerjaan impor yang berjalan pada node BE.
Batas penggunaan memori yang rendah dapat memengaruhi efisiensi impor, karena data sering kali ditulis ke disk ketika penggunaan memori mencapai batas atas. Namun, batas penggunaan memori yang terlalu tinggi dapat menyebabkan kesalahan OOM ketika konkurensi impor tinggi. Oleh karena itu, Anda harus mengatur parameter terkait memori ke nilai yang tepat berdasarkan kebutuhan bisnis Anda.
Konfigurasi Sistem Umum
Konfigurasi Node FE
Tabel berikut menjelaskan parameter konfigurasi sistem dari node FE. Anda dapat memodifikasi parameter dalam file konfigurasi fe.conf dari node FE.
Parameter | Deskripsi |
max_load_timeout_second | Periode timeout impor maksimum dan minimum. Unit: detik. Secara default, periode timeout maksimum adalah tiga hari, dan periode timeout minimum adalah 1 detik. Periode timeout impor yang Anda tentukan harus berada dalam rentang ini. Parameter ini berlaku untuk semua jenis pekerjaan impor. |
min_load_timeout_second | |
desired_max_waiting_jobs | Jumlah maksimum pekerjaan impor yang dapat ditampung oleh antrian tunggu. Nilai default: 100. Sebagai contoh, jika jumlah pekerjaan impor dalam status PENDING pada node FE mencapai nilai parameter ini, permintaan impor baru akan ditolak. Status PENDING menunjukkan bahwa pekerjaan impor menunggu untuk dijalankan. Parameter ini hanya berlaku untuk pekerjaan impor asinkron. Jika jumlah pekerjaan impor asinkron dalam status PENDING mencapai batas atas, permintaan berikutnya untuk membuat pekerjaan impor akan ditolak. |
max_running_txn_num_per_db | Jumlah maksimum pekerjaan impor yang sedang berjalan yang diizinkan di setiap database. Nilai default: 100. Ketika jumlah pekerjaan impor yang berjalan dalam database mencapai jumlah maksimum yang Anda tentukan, pekerjaan impor berikutnya tidak akan dijalankan. Dalam situasi ini, jika pekerjaan impor sinkron dikirimkan, pekerjaan tersebut akan ditolak. Jika pekerjaan impor asinkron dikirimkan, pekerjaan tersebut akan menunggu dalam antrian. |
label_keep_max_second | Periode retensi catatan sejarah untuk pekerjaan impor. StarRocks menyimpan catatan pekerjaan impor yang telah selesai dan berada dalam status FINISHED atau CANCELLED selama periode tertentu. Anda dapat mengatur periode retensi dengan menggunakan parameter ini. Periode retensi default adalah tiga hari. Parameter ini berlaku untuk semua jenis pekerjaan impor. |
Konfigurasi Node BE
Tabel berikut menjelaskan parameter konfigurasi sistem dari node BE. Anda dapat memodifikasi parameter dalam file konfigurasi be.conf dari node BE.
Parameter | Deskripsi |
push_write_mbytes_per_sec | Kecepatan tulis maksimum per tablet pada node BE. Nilai default adalah 10, yang menunjukkan kecepatan tulis 10 MB/s. Dalam kebanyakan kasus, kecepatan tulis maksimum berkisar antara 10 MB/s hingga 30 MB/s berdasarkan skema dan sistem yang digunakan. Anda dapat memodifikasi nilai parameter ini untuk mengontrol kecepatan impor data. |
write_buffer_size | Ukuran blok memori maksimum. Data yang diimpor pertama kali ditulis ke blok memori pada node BE. Ketika jumlah data yang diimpor mencapai ukuran blok memori maksimum yang Anda tentukan, data ditulis ke disk. Ukuran default adalah 100 MB. Jika ukuran blok memori maksimum terlalu kecil, sejumlah besar file kecil mungkin dihasilkan pada node BE. Anda dapat meningkatkan ukuran blok memori maksimum untuk mengurangi jumlah file yang dihasilkan. Jika ukuran blok memori maksimum terlalu besar, panggilan prosedur jarak jauh (RPC) mungkin mengalami timeout. Untuk informasi lebih lanjut, lihat deskripsi parameter tablet_writer_rpc_timeout_sec. |
tablet_writer_rpc_timeout_sec | Periode timeout RPC untuk mengirim satu batch data (1024 baris) selama proses impor. Nilai default: 600. Unit: detik. Sebuah RPC mungkin melibatkan operasi menulis blok memori dari beberapa tablet ke disk. Dalam hal ini, timeout RPC dapat terjadi karena operasi penulisan disk. Anda dapat menyesuaikan periode timeout RPC untuk mengurangi kesalahan timeout, seperti kesalahan send batch fail. Jika Anda mengatur parameter write_buffer_size ke nilai yang lebih tinggi, Anda juga harus meningkatkan nilai parameter tablet_writer_rpc_timeout_sec. |
streaming_load_rpc_max_alive_time_sec | Periode timeout menunggu untuk setiap thread Writer. Selama proses impor data, StarRocks memulai thread Writer untuk menerima data dari dan menulis data ke setiap tablet. Nilai default: 600. Unit: detik. Jika proses Writer tidak menerima data apa pun dalam periode timeout menunggu yang Anda tentukan, StarRocks secara otomatis menghancurkan thread Writer. Ketika sistem memproses data dengan kecepatan rendah, thread Writer mungkin tidak menerima batch data berikutnya dalam waktu lama dan oleh karena itu melaporkan kesalahan |
load_process_max_memory_limit_percent | Jumlah maksimum dan persentase tertinggi memori yang dapat dikonsumsi untuk semua pekerjaan impor pada setiap node BE. StarRocks mengidentifikasi konsumsi memori yang lebih kecil di antara nilai dua parameter sebagai konsumsi memori akhir yang diizinkan.
|
load_process_max_memory_limit_bytes |