All Products
Search
Document Center

E-MapReduce:FAQ ZooKeeper

Last Updated:Mar 26, 2026

Mengapa layanan ZooKeeper saya tidak stabil atau restart secara tak terduga?

Penyebab paling umum adalah jumlah znode yang terlalu banyak atau ukuran snapshot yang terlalu besar. ZooKeeper menyimpan seluruh znode di memori dan menyinkronkan data antar znode—jika salah satu batas tersebut dilampaui, tekanan memori dapat menyebabkan layanan menjadi tidak stabil atau crash.

ZooKeeper merupakan layanan koordinasi terdistribusi, bukan sistem file. Jika jumlah znode mencapai ratusan ribu, periksa apakah aplikasi hulu menulis ke ZooKeeper melebihi tujuan penggunaannya.

Pastikan tetap berada dalam batas berikut:

ResourceBatas yang Direkomendasikan
Jumlah znodeKurang dari 100.000
Ukuran snapshotLebih kecil dari 800 MB per snapshot

Untuk memeriksa jumlah znode, buka tab Monitoring pada halaman detail kluster di Konsol E-MapReduce (EMR).

Untuk memeriksa ukuran snapshot:

  1. Pada tab Configure halaman layanan ZooKeeper, cari dataDir untuk menemukan path direktori data.

  2. Jalankan perintah berikut untuk menampilkan daftar file snapshot beserta ukurannya:

    ls -lrt /mnt/disk1/zookeeper/data/version-2/snapshot*

Jika salah satu batas dilampaui, periksa distribusi znode, lalu hentikan aplikasi hulu yang menulis secara berlebihan ke ZooKeeper berdasarkan distribusi tersebut.

Bagaimana cara melakukan migrasi direktori data ZooKeeper tanpa mengganggu layanan?

Jika ruang disk habis atau performa disk menurun, migrasikan direktori data ZooKeeper ke path baru. Lakukan migrasi pada node follower terlebih dahulu, kemudian pada leader—langkah ini menjaga ketersediaan ensemble ZooKeeper selama proses migrasi.

Contoh berikut melakukan migrasi dari /mnt/disk1/zookeeper ke /mnt/disk2/zookeeper. Pada kluster ini, master-1-2 adalah leader, sedangkan master-1-1 dan master-1-3 adalah follower.

Langkah 1: Perbarui konfigurasi direktori data

  1. Pada tab Configure halaman layanan ZooKeeper, cari dataDir dan ubah nilainya menjadi /mnt/disk2/zookeeper.

  2. Klik Save.

  3. Pada dialog Save, isi Execution Reason dan klik Save.

Langkah 2: Terapkan konfigurasi yang diperbarui

  1. Di pojok kanan atas tab Configure, klik Deploy Client Configuration.

  2. Pada dialog, isi Execution Reason dan klik OK.

  3. Pada pesan konfirmasi, klik OK.

Langkah 3: (Opsional) Verifikasi direktori data baru

  1. Login ke kluster EMR Anda melalui SSH. Untuk informasi lebih lanjut, lihat Login ke kluster.

  2. Jalankan perintah berikut dan pastikan dataDir mengarah ke /mnt/disk2/zookeeper:

    cat /etc/emr/zookeeper-conf/zoo.cfg

Langkah 4: Migrasikan data pada setiap node

Lakukan langkah-langkah berikut pada master-1-1 dan master-1-3 (follower) terlebih dahulu, kemudian pada master-1-2 (leader).

Untuk setiap node:

  1. Pada tab Status halaman layanan ZooKeeper, temukan node tersebut dan klik Stop di kolom Actions. Isi Execution Reason dan klik OK, lalu klik OK lagi.

  2. Login ke node master melalui SSH. Jalankan perintah berikut untuk menyalin direktori data dan mengatur izin yang sesuai:

    sudo rm -rf /mnt/disk2/zookeeper && sudo cp -rf /mnt/disk1/zookeeper /mnt/disk2/zookeeper && sudo chown hadoop:hadoop -R /mnt/disk2/zookeeper
  3. Pada tab Status, temukan node tersebut dan klik Start di kolom Actions. Isi Execution Reason dan klik OK, lalu klik OK lagi.

  4. Segarkan halaman hingga Health Status menampilkan Healthy untuk node tersebut sebelum melanjutkan ke node berikutnya.

Catatan Setelah Anda menghentikan master-1-2 (leader awal), node tersebut akan menjadi follower, dan master-1-1 atau master-1-3 akan mengambil alih sebagai leader baru.

Migrasi selesai ketika semua node menampilkan Health Status sebagai Healthy.