All Products
Search
Document Center

E-MapReduce:FAQ

Last Updated:Jun 19, 2026

Topik ini menyediakan jawaban atas beberapa pertanyaan umum mengenai ClickHouse.

Bagaimana cara membuat pengguna ClickHouse?

Anda dapat membuat pengguna ClickHouse melalui Konsol E-MapReduce (EMR) atau dengan menggunakan client ClickHouse.

  • Konsol EMR

    Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab server-users. Tambahkan item konfigurasi dengan parameter users.<YourUserName>.password, users.<YourUserName>.password_sha256_hex, atau users.<YourUserName>.password_double_sha1_hex, lalu tentukan nilai kustom. Simpan item konfigurasi tersebut dan restart layanan untuk membuat pengguna.

    Ganti <YourUserName> dengan nama pengguna ClickHouse yang ingin Anda buat.

    Catatan

    Untuk informasi lebih lanjut, lihat Manage configuration items untuk menambahkan parameter komponen dan Restart a service untuk me-restart layanan.

  • Client ClickHouse

    1. Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab server-users. Tambahkan item konfigurasi dengan parameter users.default.access_management dan nilai 1. Simpan konfigurasi dan restart layanan. Kemudian, hubungkan ke kluster ClickHouse sebagai pengguna default.

    2. Login ke kluster EMR ClickHouse dalam mode SSH. Untuk informasi lebih lanjut, lihat Log on to a cluster.

    3. Jalankan perintah berikut untuk memulai client ClickHouse:

      clickhouse-client -h core-1-1 -m
      Catatan

      Contoh ini login ke node core-1-1. Jika Anda memiliki beberapa core node, Anda dapat login ke salah satunya.

    4. 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';
      Catatan

      Pada contoh ini, nama pengguna adalah user_test dan password-nya adalah 123456. Anda dapat menentukan nama dan password 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'] [,...];
    5. Eksekusi pernyataan berikut untuk mengkueri pengguna yang sudah ada:

      SHOW USERS;

      Informasi mengenai pengguna yang sudah 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. Nilai B lebih kecil dari A.

  • Penyebab: Data sebenarnya tidak hilang di ClickHouse dalam sebagian besar kasus. Namun, setidaknya dua replica disimpan di setiap shard. Mesin *MergeTree digunakan untuk tabel lokal. Jika Anda menggunakan tabel terdistribusi untuk membaca data, jumlah entri data yang dibaca mungkin lebih sedikit daripada jumlah entri data yang ditulis.

    Data didistribusikan ke setiap node baik ditulis melalui tabel terdistribusi maupun langsung ditulis ke tabel lokal. Saat Anda membaca data menggunakan tabel terdistribusi, setiap shard menggunakan satu koneksi secara default. Dalam hal ini, jumlah koneksi lebih sedikit daripada jumlah node. Akibatnya, 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 di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab server-users. Klik Add Configuration Item dan tambahkan parameter profiles.<YOUR_PROFILE_NAME>.max_parallel_replicas. Atur nilainya minimal sama dengan jumlah replica di setiap shard. Lalu, pastikan parameter users.<YOUR_USER_NAME>.profile diatur ke <YOUR_PROFILE_NAME>.

    Catatan

    Ganti <YOUR_PROFILE_NAME> dan <YOUR_USER_NAME> dengan nama aktual Anda. Untuk informasi lebih lanjut mengenai parameter ini, lihat Access Control and Account Management.

Apa yang harus saya lakukan jika muncul pesan error "Memory limit (for total) exceeded"?

  • Penyebab: Penggunaan memori melebihi total memori yang tersedia untuk server.

  • Solusi: Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab server-config. Klik Add Configuration Item dan tambahkan parameter max_server_memory_usage. Nilai maksimum untuk parameter ini adalah Physical memory of the machine * max_server_memory_usage_to_ram_ratio.

    Catatan

    Nilai 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 nilainya sesuai kebutuhan bisnis Anda.

Apa yang harus saya lakukan jika muncul pesan error "Memory limit (for query) exceeded"?

  • Penyebab: Penggunaan memori melebihi memori maksimum yang tersedia untuk satu kueri.

  • Solusi

    Skenario

    Operasi

    Konfigurasi global

    Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab server-config. Klik Add Configuration Item dan tambahkan parameter profiles.<YOUR_PROFILE_NAME>.max_memory_usage. Lalu, pastikan parameter users.<YOUR_USER_NAME>.profile diatur ke <YOUR_PROFILE_NAME>.

    Catatan

    Ganti <YOUR_PROFILE_NAME> dan <YOUR_USER_NAME> dengan nama aktual Anda. Untuk informasi lebih lanjut mengenai parameter ini, lihat Access Control and Account Management.

    Untuk client ClickHouse

    Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab client-config. Klik Add Configuration Item dan tambahkan parameter max_memory_usage.

    Untuk session

    Jalankan perintah SET max_memory_usage=xxxx. Pengaturan ini berlaku selama durasi session.

    Untuk kueri

    Tambahkan pengaturan max_memory_usage ke dalam pernyataan SQL. Konfigurasi ini hanya berlaku untuk kueri saat ini.

    Contoh: SELECT column FROM table SETTINGS max_memory_usage=xxxx.

Apa yang harus saya lakukan jika muncul pesan error "Memory limit (for user) exceeded"?

  • Penyebab: Penggunaan memori melebihi memori maksimum yang tersedia untuk satu pengguna.

  • Solusi

    Skenario

    Operasi

    Konfigurasi global

    Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab server-users. Klik Add Configuration Item dan tambahkan parameter profiles.<YOUR_PROFILE_NAME>.max_memory_usage_for_user. Lalu, pastikan parameter users.<YOUR_USER_NAME>.profile diatur ke <YOUR_PROFILE_NAME>.

    Catatan

    Ganti <YOUR_PROFILE_NAME> dan <YOUR_USER_NAME> dengan nama aktual Anda. Untuk informasi lebih lanjut mengenai parameter ini, lihat Access Control and Account Management.

    Untuk client ClickHouse

    Pada tab Configure di halaman layanan ClickHouse di Konsol E-MapReduce, klik tab client-config. Klik Add Configuration Item dan tambahkan parameter max_memory_usage_for_user.

    Untuk session

    Jalankan perintah SET max_memory_usage_for_user=xxxx. Pengaturan ini berlaku selama durasi session.

    Untuk kueri

    Tambahkan pengaturan max_memory_usage_for_user ke dalam pernyataan SQL. Konfigurasi ini hanya berlaku untuk kueri saat ini.

    Contoh: SELECT column FROM table SETTINGS max_memory_usage_for_user=xxxx.

Bagaimana komponen layanan ClickHouse didistribusikan dalam kluster OLAP?

Layanan ClickHouse terdiri dari komponen-komponen berikut: ClickHouseRuntime, ClickHouseServer, dan ClickHouseKeeper.

  • Pada kluster OLAP EMR V3.X, komponen ClickHouseKeeper tidak diinstal, komponen ClickHouseRuntime diinstal pada semua jenis node, dan komponen ClickHouseServer hanya diinstal pada core node.

  • Pada kluster OLAP EMR V5.X, komponen ClickHouseRuntime diinstal pada semua jenis node, dan komponen ClickHouseServer hanya diinstal pada core node. Komponen ClickHouseKeeper diinstal pada core node pertama atau tiga core node pertama dan tidak mendukung scale-out. Misalnya, jika Anda mengonfigurasi dua core node saat membuat kluster OLAP, komponen ClickHouseKeeper diinstal pada core node pertama. Jika Anda menambahkan dua core node lagi ke kluster, jumlah core node tempat komponen ClickHouseKeeper diinstal tetap tidak berubah.

Mengapa kecepatan impor data berangsur-angsur menurun?

Di ClickHouse, sebagian besar tabel merupakan tabel berbasis MergeTree, seperti tabel ReplicatedMergeTree dan ReplacingMergeTree.

Saat data ditulis ke tabel MergeTree, data diurutkan di memori lalu di-flush ke disk. Dalam proses ini, sebuah part data dihasilkan di disk. Part-part data di disk terus-menerus digabungkan oleh thread latar belakang. Dengan demikian, part-part data kecil digabungkan menjadi part data yang lebih besar. Pada fase awal impor data ke tabel MergeTree, thread latar belakang mungkin menemukan bahwa tidak ada part data yang dapat digabungkan. Semua sumber daya digunakan untuk menerima data lalu meng-flush-nya ke disk. Oleh karena itu, kecepatan impor data tinggi. Setelah beberapa waktu, semakin banyak part data yang dapat digabungkan oleh thread latar belakang. Akibatnya, sebagian sumber daya dialihkan untuk menggabungkan part-part data. Semakin banyak data yang di-flush ke disk, semakin banyak sumber daya komputasi yang diperlukan untuk menggabungkan part-part data tersebut. Jumlah sumber daya yang digunakan untuk menggabungkan part-part data meningkat hingga tercapai keseimbangan antara impor data dan penggabungan data. Akibatnya, kecepatan impor data menurun.

Bagaimana cara melakukan upgrade layanan ClickHouse?

Versi layanan ClickHouse bervariasi tergantung pada versi kluster EMR. Jika Anda ingin melakukan upgrade layanan ClickHouse, Anda harus melakukan upgrade kluster EMR.

Mengapa saya perlu mendefinisikan kluster logis di ClickHouse?

Di ClickHouse, istilah "cluster" mengacu pada kluster logis yang didefinisikan dalam konfigurasi. Anda dapat menjalankan perintah select * from system.clusters untuk melihat kluster logis yang telah didefinisikan saat ini.

Setiap kluster logis terdiri dari beberapa mesin. Anda dapat mengonfigurasi kluster logis untuk menetapkan hubungan antar 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 mencakup semua node dalam kluster EMR ClickHouse fisik telah dikonfigurasi.

Apa itu shard dan replica di ClickHouse?

Di ClickHouse, sebuah node dapat menjadi replica dari satu atau beberapa node lain. Data tabel yang menggunakan mesin Replicated*MergeTree pada node-node tersebut identik.

Di ClickHouse, sebuah shard terdiri dari satu atau beberapa node. Node-node dalam shard tersebut saling menjadi replica satu sama lain.

Bagaimana cara menguji performa ClickHouse?

Dalam sebagian besar kasus, Anda dapat menggunakan Star Schema Benchmark (SSB) untuk menguji performa ClickHouse. Untuk informasi lebih lanjut, lihat Star Schema Benchmark. Untuk informasi mengenai kasus uji lainnya, lihat Tutorials and Example Datasets dan clickhouse-benchmark.

Apakah saya dapat mengubah jumlah shard dan replica setelah membuat kluster?

Sebagai contoh, saat membuat kluster, jumlah shard adalah A dan jumlah replica adalah B. Setelah kluster dibuat, Anda ingin mengubah jumlah shard menjadi C dan jumlah replica menjadi D. ClickHouse memungkinkan Anda mengubah jumlah shard dan replica. Untuk mengubah jumlah shard dan replica, lakukan operasi berikut: Pada tab Configure di halaman layanan ClickHouse di Konsol EMR, klik tab server-metrika. Pada tab server-metrika, temukan parameter clickhouse_remote_servers dan ubah jumlah shard serta jumlah replica dalam pengaturan parameter tersebut.

Namun, untuk mencegah error, kami menyarankan agar Anda tidak langsung mengubah jumlah shard dan replica. Misalnya, jika data sudah ada di kluster, perubahan tersebut dapat menyebabkan error data. Kami menyarankan agar Anda menambahkan kluster logis dan mengonfigurasi jumlah shard serta replica sesuai kebutuhan bisnis Anda. Dengan cara ini, Anda dapat mempertahankan konfigurasi asli shard dan replica.

Pengaturan apa saja yang harus saya konfigurasikan saat menggunakan HDFS di EMR ClickHouse?

Untuk informasi lebih lanjut, lihat HDFS.

Apa perbedaan antara EMR ClickHouse dan ApsaraDB for ClickHouse?

  • ID produk kluster E-MapReduce ClickHouse diawali dengan c-, seperti c-3c8697f91408****. ID produk kluster ApsaraDB for ClickHouse diawali dengan cc-, seperti cc-bp16qwvp7hy8i****.

  • EMR ClickHouse bersifat semi-managed. Anda dapat login ke Instance Elastic Compute Service (ECS) untuk melakukan operasi O&M. ApsaraDB for ClickHouse bersifat fully managed. Anda tidak dapat login ke Instance ECS untuk melakukan operasi O&M.

Apakah ClickHouse dapat digunakan untuk mengkueri tabel Hive yang menggunakan DLF untuk penyimpanan metadata?

Tidak, ClickHouse tidak dapat digunakan untuk mengkueri tabel Hive yang menggunakan Data Lake Formation (DLF) sebagai penyimpanan metadata. ClickHouse hanya dapat mengkueri tabel Hive yang menggunakan MySQL atau ApsaraDB RDS sebagai penyimpanan metadata. Oleh karena itu, kami menyarankan agar Anda tidak menggunakan ClickHouse untuk mengkueri tabel Hive.

Saran berikut diberikan berdasarkan kebutuhan bisnis Anda:

  • Jika Anda ingin mengimpor data dari Hive ke ClickHouse, kami menyarankan agar Anda menggunakan Apache Spark atau Apache Seatunnel.

  • Jika Anda ingin menganalisis data Hive, kami menyarankan agar Anda menggunakan engine seperti StarRocks, Trino, atau Impala.

Bagaimana cara mengurangi volume data pada tabel system.zookeeper_log?

Tabel system.zookeeper_log di ClickHouse mencatat log detail interaksi antara ClickHouse dan ZooKeeper. Tabel ini tidak terkait dengan log layanan ZooKeeper. Mengatur tingkat log layanan ZooKeeper tidak memengaruhi volume data pada tabel system.zookeeper_log.

Penyebab masalah

Volume data pada tabel system.zookeeper_log dapat meningkat pesat karena alasan-alasan berikut:

  • Tingkat log ZooKeeper diatur ke INFO: Pada tingkat INFO, ClickHouse mencatat semua detail interaksi dengan ZooKeeper, yang menghasilkan volume log yang besar.

  • Tidak ada strategi pembersihan otomatis: Jika tidak ada kebijakan TTL yang dikonfigurasi untuk tabel tersebut, data log akan terus menumpuk tanpa batas.

  • Operasi metadata frekuensi tinggi: Operasi seperti pembuatan atau penghapusan tabel yang sering, sinkronisasi replica, dan scaling kluster menghasilkan banyak log interaksi ZooKeeper.

Solusi

Tetapkan kebijakan TTL (Time to Live) untuk tabel system.zookeeper_log agar data lama secara otomatis dibersihkan.

Penting

Jangan menambahkan parameter zookeeper_log.ttl dalam item konfigurasi server-config di Konsol EMR. Gunakan pernyataan SQL untuk menetapkan kebijakan TTL.

Jalankan pernyataan SQL berikut untuk menetapkan kebijakan TTL yang secara otomatis menghapus data log yang berusia lebih dari 7 hari:

ALTER TABLE system.zookeeper_log MODIFY TTL event_date + INTERVAL 7 DAY;

Sesuaikan periode retensi berdasarkan kebutuhan bisnis Anda. Misalnya, untuk menyimpan data selama 14 hari:

ALTER TABLE system.zookeeper_log MODIFY TTL event_date + INTERVAL 14 DAY;