Topik ini menjawab beberapa pertanyaan umum tentang ClickHouse.
Apa yang harus dilakukan jika muncul pesan kesalahan "Batas memori (total) terlampaui"?
Apa yang harus dilakukan jika muncul pesan kesalahan "Batas memori (untuk kueri) terlampaui"?
Apa yang harus dilakukan jika muncul pesan kesalahan "Batas memori (untuk pengguna) terlampaui"?
Bagaimana komponen layanan ClickHouse didistribusikan dalam kluster OLAP?
Dapatkah jumlah shard dan replika diubah setelah pembuatan kluster?
Pengaturan apa yang harus dikonfigurasikan saat menggunakan HDFS di EMR ClickHouse?
Apa perbedaan antara EMR ClickHouse dan ApsaraDB for ClickHouse?
Bagaimana cara membuat pengguna ClickHouse?
Anda dapat membuat pengguna ClickHouse melalui konsol E-MapReduce (EMR) atau menggunakan klien ClickHouse.
Konsol EMR
Di halaman layanan ClickHouse pada tab Configure di konsol EMR, klik tab server-users. Pada tab server-users, klik Tambah Item Konfigurasi. Di kotak dialog yang muncul, tambahkan item konfigurasi dengan kunci users.<YourUserName>.password, users.<YourUserName>.password_sha256_hex, atau users.<YourUserName>.password_double_sha1_hex dan tentukan nilai untuk item tersebut. Simpan konfigurasi lalu mulai ulang layanan ClickHouse.
Ganti <YourUserName> dengan nama pengguna ClickHouse yang ingin dibuat.
CatatanUntuk informasi lebih lanjut tentang penambahan item konfigurasi, lihat Kelola parameter untuk layanan. Untuk informasi lebih lanjut tentang memulai ulang layanan, lihat Mulai ulang layanan.
Klien ClickHouse
Di halaman layanan ClickHouse pada tab Configure di konsol EMR, klik tab server-users. Pada tab server-users, klik Tambah Item Konfigurasi. Di kotak dialog yang muncul, tambahkan item konfigurasi dengan kunci users.default.access_management dan nilai 1, simpan konfigurasi, lalu mulai ulang layanan ClickHouse. Gunakan akun pengguna default untuk terhubung ke kluster ClickHouse Anda.
Masuk ke kluster EMR ClickHouse melalui SSH. Untuk informasi lebih lanjut, lihat Masuk ke kluster.
Jalankan perintah berikut untuk memulai klien ClickHouse:
clickhouse-client -h core-1-1 -mCatatanDalam contoh perintah, core-1-1 menunjukkan nama node inti yang dimasuki. Jika ada beberapa node inti, Anda dapat masuk ke salah satu node tersebut.
Eksekusi pernyataan berikut untuk membuat pengguna ClickHouse:
CREATE USER IF NOT EXISTS user_test ON CLUSTER new_cluster_emr IDENTIFIED WITH plaintext_password BY '123456';CatatanDalam contoh ini, nama pengguna adalah user_test dan kata sandinya adalah 123456. Anda dapat menentukan nama dan kata sandi sesuai kebutuhan bisnis Anda.
Sintaks untuk membuat pengguna ClickHouse:
CREATE USER [IF NOT EXISTS | OR REPLACE] name1 [ON CLUSTER cluster_name1] [, name2 [ON CLUSTER cluster_name2] ...] [NOT IDENTIFIED | IDENTIFIED {[WITH {no_password | plaintext_password | sha256_password | sha256_hash | double_sha1_password | double_sha1_hash}] BY {'password' | 'hash'}} | {WITH ldap SERVER 'server_name'} | {WITH kerberos [REALM 'realm']}] [HOST {LOCAL | NAME 'name' | REGEXP 'name_regexp' | IP 'address' | LIKE 'pattern'} [,...] | ANY | NONE] [DEFAULT ROLE role [,...]] [GRANTEES {user | role | ANY | NONE} [,...] [EXCEPT {user | role} [,...]]] [SETTINGS variable [= value] [MIN [=] min_value] [MAX [=] max_value] [READONLY | WRITABLE] | PROFILE 'profile_name'] [,...];Eksekusi pernyataan berikut untuk menanyakan pengguna yang ada:
SHOW USERS;Informasi tentang pengguna yang ada akan dikembalikan.
┌─name──────┐ │ default │ │ user_test │ │ user_test2 │ └─────────┘
Apa yang harus saya lakukan jika terjadi kehilangan data?
Deskripsi Masalah: Sejumlah total A entri data ditulis ke ClickHouse, tetapi hanya B entri data yang dibaca. B kurang dari A.
Penyebab: Data tidak hilang di ClickHouse dalam sebagian besar kasus. Namun, setidaknya dua replika disimpan di setiap shard. Mesin *MergeTree digunakan untuk tabel lokal. Jika Anda membaca data menggunakan tabel terdistribusi, jumlah entri data yang dibaca mungkin kurang dari jumlah entri data yang ditulis.
Data didistribusikan ke setiap node tanpa memandang apakah data ditulis menggunakan tabel terdistribusi atau langsung ke tabel lokal. Saat membaca data menggunakan tabel terdistribusi, setiap shard menggunakan satu koneksi secara default. Dalam hal ini, jumlah koneksi kurang dari jumlah node, sehingga data pada beberapa node tidak dapat dibaca. Contoh pernyataan:
CREATE TABLE db.table_local ( ... ) Engine = MergeTree() CREATE TABLE db.table_distributed ( ... ) Engine = Distributed(cluster_emr, db, table_local, rand());Solusi
Solusi
Operasi
(Direkomendasikan) Solusi 1
Hapus tabel db.table_local dan buat tabel replikasi. Gunakan tabel replikasi yang dibuat sebagai tabel lokal.
(Tidak direkomendasikan) Solusi 2
Pada tab Configure halaman layanan ClickHouse di konsol EMR, klik tab server-users. Pada tab server-users, klik Add Configuration Item. Di kotak dialog yang muncul, tambahkan item konfigurasi dengan kunci profiles.<your_profile_name>.max_parallel_replicas dan nilai lebih besar atau sama dengan jumlah replika di setiap shard. Pastikan nilai dari users.<your_clickhouse-client_name>.profile sama dengan nilai dari <your_profile_name>.
CatatanGanti <your_profile_name> dengan nama profil Anda dan ganti <your_clickhouse-client_name> dengan nama klien ClickHouse Anda. Untuk informasi lebih lanjut tentang item konfigurasi, lihat Konfigurasikan izin pengguna.
Apa yang harus saya lakukan jika pesan kesalahan "Batas memori (total) terlampaui" muncul?
Penyebab: Penggunaan memori melebihi total memori yang tersedia untuk server.
Solusi: Di halaman layanan ClickHouse pada tab Configure di konsol EMR, klik tab server-config. Pada tab server-config, klik Add Configuration Item. Di kotak dialog yang muncul, tambahkan item konfigurasi max_server_memory_usage. Nilai maksimum yang dapat ditentukan untuk item ini dihitung menggunakan rumus berikut:
Memori server fisik × Nilai max_server_memory_usage_to_ram_ratio.CatatanNilai default parameter max_server_memory_usage_to_ram_ratio di ClickHouse adalah 0.9. Untuk mengubah nilai parameter ini, tambahkan item konfigurasi max_server_memory_usage_to_ram_ratio dan tentukan nilai sesuai kebutuhan bisnis Anda.
Apa yang harus saya lakukan jika pesan kesalahan "Batas memori (untuk kueri) terlampaui" muncul?
Penyebab: Penggunaan memori melebihi memori maksimum yang tersedia untuk satu kueri.
Solusi
Skenario
Operasi
Konfigurasi global
Pada tab Configure halaman layanan ClickHouse di konsol EMR, klik tab server-config. Pada tab server-config, klik Add Configuration Item. Di kotak dialog yang muncul, tambahkan item konfigurasi profiles.<your_profile_name>.max_memory_usage. Pastikan nilai item konfigurasi users.<your_clickhouse-client_name>.profile sama dengan nilai <your_profile_name>.
CatatanGanti <your_profile_name> dengan nama profil Anda dan ganti <your_clickhouse-client_name> dengan nama klien ClickHouse Anda. Untuk informasi lebih lanjut tentang item konfigurasi, lihat Konfigurasikan izin pengguna.
Untuk klien ClickHouse
Pada tab Configure halaman layanan ClickHouse di konsol EMR, klik tab client-config. Pada tab client-config, klik Add Configuration Item. Di kotak dialog yang muncul, tambahkan item konfigurasi max_memory_usage.
Untuk sesi
Jalankan perintah
SET max_memory_usage=xxxx. Konfigurasi berlaku selama siklus hidup sesi.Untuk kueri
Tambahkan pengaturan max_memory_usage ke pernyataan SQL. Konfigurasi hanya berlaku untuk kueri saat ini.
Pernyataan contoh:
SELECT column FROM table SETTINGS max_memory_usage=xxxx
Apa yang harus saya lakukan jika pesan kesalahan "Batas memori (untuk pengguna) terlampaui" muncul?
Penyebab: Penggunaan memori melebihi memori maksimum yang tersedia untuk satu pengguna.
Solusi
Skenario
Operasi
Konfigurasi global
Pada tab Configure halaman layanan ClickHouse di konsol EMR, klik tab server-users. Pada tab server-users, klik Add Configuration Item. Di kotak dialog yang muncul, tambahkan item konfigurasi profiles.<your_profile_name>.max_memory_usage_for_user. Pastikan nilai item konfigurasi users.<your_clickhouse-client_name>.profile sama dengan nilai <your_profile_name>.
CatatanGanti <your_profile_name> dengan nama profil Anda dan ganti <your_clickhouse-client_name> dengan nama klien ClickHouse Anda. Untuk informasi lebih lanjut tentang item konfigurasi, lihat Konfigurasikan izin pengguna.
Untuk klien ClickHouse
Pada tab Configure halaman layanan ClickHouse di konsol EMR, klik tab client-config. Pada tab client-config, klik Add Configuration Item. Di kotak dialog yang muncul, tambahkan item konfigurasi max_memory_usage_for_user.
Untuk sesi
Jalankan perintah
SET max_memory_usage_for_user=xxxx. Konfigurasi berlaku selama siklus hidup sesi.Untuk kueri
Tambahkan pengaturan max_memory_usage_for_user ke pernyataan SQL. Konfigurasi hanya berlaku untuk kueri saat ini.
Pernyataan contoh:
SELECT column FROM table SETTINGS max_memory_usage_for_user=xxxx
Bagaimana komponen layanan ClickHouse didistribusikan dalam kluster OLAP?
Layanan ClickHouse mencakup komponen berikut: ClickHouseRuntime, ClickHouseServer, dan ClickHouseKeeper.
Dalam kluster OLAP EMR V3.X, komponen ClickHouseKeeper tidak diinstal, komponen ClickHouseRuntime diinstal di semua jenis node, dan komponen ClickHouseServer hanya diinstal di node inti.
Dalam kluster OLAP EMR V5.X, komponen ClickHouseRuntime diinstal di semua jenis node, dan komponen ClickHouseServer hanya diinstal di node inti. Komponen ClickHouseKeeper diinstal di node inti pertama atau tiga node inti pertama dan tidak mendukung penambahan skala. Misalnya, jika Anda mengonfigurasi dua node inti saat membuat kluster OLAP, komponen ClickHouseKeeper diinstal di node inti pertama. Jika Anda menambahkan dua node inti lagi ke kluster, jumlah node inti tempat komponen ClickHouseKeeper diinstal tetap tidak berubah.
Mengapa kecepatan impor data secara bertahap menurun?
Di ClickHouse, sebagian besar tabel adalah tabel terkait MergeTree, seperti tabel ReplicatedMergeTree dan ReplacingMergeTree.
Saat data ditulis ke tabel MergeTree, data diurutkan di memori lalu disimpan ke disk. Dalam hal ini, bagian data dihasilkan di disk. Bagian data di disk terus digabungkan menggunakan thread latar belakang. Dengan cara ini, bagian data kecil digabungkan menjadi bagian data besar. Pada fase awal impor data ke tabel MergeTree, thread latar belakang mungkin menemukan bahwa tidak ada bagian data yang dapat digabungkan. Semua sumber daya digunakan untuk menerima data dan menyimpannya ke disk. Oleh karena itu, kecepatan impor data tinggi. Setelah beberapa waktu, lebih banyak bagian data dapat digabungkan menggunakan thread latar belakang. Akibatnya, beberapa sumber daya digunakan untuk menggabungkan bagian data. Semakin banyak data yang disimpan ke disk menunjukkan bahwa semakin banyak sumber daya komputasi diperlukan untuk menggabungkan bagian data. Jumlah sumber daya yang digunakan untuk menggabungkan bagian data meningkat hingga keseimbangan tercapai antara impor data dan penggabungan data. Akibatnya, kecepatan impor data menurun.
Bagaimana cara meng-upgrade layanan ClickHouse?
Versi layanan ClickHouse bervariasi berdasarkan versi kluster EMR. Jika ingin meng-upgrade layanan ClickHouse, Anda harus meng-upgrade kluster EMR.
Mengapa saya perlu mendefinisikan kluster logis di ClickHouse?
Anda dapat menentukan konfigurasi terkait untuk mendefinisikan kluster logis di ClickHouse. Jalankan pernyataan SQL select * from system.clusters di ClickHouse untuk melihat kluster logis yang ada.
Setiap kluster logis berisi beberapa mesin. Anda dapat mengonfigurasi kluster logis untuk menetapkan hubungan antara mesin yang berbeda, seperti hubungan sharding dan replikasi. Anda juga dapat menggunakan kluster logis yang berbeda dalam skenario bisnis yang berbeda.
Secara default, kluster logis yang berisi semua node dalam kluster EMR ClickHouse fisik dikonfigurasi.
Apa itu shard dan replika dalam ClickHouse?
Dalam ClickHouse, sebuah node dapat menjadi replika dari satu atau beberapa node. Data dari tabel yang menggunakan mesin Replicated*MergeTree pada node-node tersebut adalah sama.
Dalam ClickHouse, sebuah shard terdiri dari satu atau lebih node. Node-node dalam shard merupakan replika satu sama lain.
Bagaimana cara saya menguji performa ClickHouse?
Dalam kebanyakan kasus, Anda dapat menggunakan Star Schema Benchmark (SSB) untuk menguji performa ClickHouse. Untuk informasi lebih lanjut, lihat Star Schema Benchmark. Untuk informasi tentang contoh pengujian lainnya, lihat Tutorial dan Contoh Dataset dan clickhouse-benchmark.
Apakah saya dapat mengubah jumlah shard dan replika setelah membuat kluster?
Sebagai contoh, saat membuat kluster, jumlah shard adalah A dan jumlah replika adalah B. Setelah kluster dibuat, Anda ingin mengubah jumlah shard menjadi C dan jumlah replika menjadi D. ClickHouse memungkinkan Anda untuk mengubah jumlah shard dan replika. Untuk mengubah jumlah shard dan replika, lakukan operasi berikut: Di halaman layanan ClickHouse pada tab Konfigurasi di konsol EMR, klik tab server-metrika. Pada tab server-metrika, temukan parameter clickhouse_remote_servers dan ubah jumlah shard dan jumlah replika dalam pengaturan parameter tersebut.
Namun, untuk mencegah kesalahan, kami menyarankan agar Anda tidak langsung mengubah jumlah shard dan replika. Sebagai contoh, jika data sudah ada di dalam kluster, perubahan tersebut dapat menyebabkan kesalahan data. Kami menyarankan agar Anda menambahkan kluster logis dan mengonfigurasi jumlah shard dan replika sesuai dengan kebutuhan bisnis Anda. Dengan cara ini, Anda dapat mempertahankan konfigurasi asli dari shard dan replika.
Pengaturan apa yang harus saya konfigurasi saat menggunakan HDFS di EMR ClickHouse?
Untuk informasi lebih lanjut, lihat HDFS.
Apa perbedaan antara EMR ClickHouse dan ApsaraDB for ClickHouse?
ID kluster EMR ClickHouse dimulai dengan
c-. Contoh: c-3c8697f91408****. ID kluster ApsaraDB for ClickHouse dimulai dengancc-. Contoh: cc-bp16qwvp7hy8i****.EMR ClickHouse bersifat semi-managed. Anda dapat masuk ke instance Elastic Compute Service (ECS) untuk melakukan operasi O&M. ApsaraDB for ClickHouse sepenuhnya dikelola, dan Anda tidak dapat masuk ke instance ECS untuk melakukan operasi O&M.
Apakah ClickHouse dapat digunakan untuk mengquery tabel Hive yang menggunakan DLF untuk penyimpanan metadata?
Tidak, ClickHouse tidak dapat digunakan untuk mengquery tabel Hive yang menggunakan Data Lake Formation (DLF) untuk penyimpanan metadata. ClickHouse hanya dapat digunakan untuk mengquery tabel Hive yang menggunakan MySQL atau ApsaraDB RDS untuk penyimpanan metadata. Oleh karena itu, kami menyarankan agar Anda tidak menggunakan ClickHouse untuk mengquery tabel Hive.
Berikut adalah beberapa saran berdasarkan kebutuhan bisnis Anda:
Jika ingin mengimpor data dari Hive ke ClickHouse, kami sarankan Anda menggunakan Apache Spark atau Apache Seatunnel.
Jika ingin menganalisis data Hive, kami sarankan Anda menggunakan mesin seperti StarRocks, Trino, atau Impala.