Mengapa layanan ZooKeeper saya tidak stabil atau restart secara tak terduga?
Bagaimana cara melakukan migrasi direktori data ZooKeeper tanpa mengganggu layanan?
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:
| Resource | Batas yang Direkomendasikan |
|---|---|
| Jumlah znode | Kurang dari 100.000 |
| Ukuran snapshot | Lebih 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:
Pada tab Configure halaman layanan ZooKeeper, cari
dataDiruntuk menemukan path direktori data.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
Pada tab Configure halaman layanan ZooKeeper, cari
dataDirdan ubah nilainya menjadi/mnt/disk2/zookeeper.Klik Save.
Pada dialog Save, isi Execution Reason dan klik Save.
Langkah 2: Terapkan konfigurasi yang diperbarui
Di pojok kanan atas tab Configure, klik Deploy Client Configuration.
Pada dialog, isi Execution Reason dan klik OK.
Pada pesan konfirmasi, klik OK.
Langkah 3: (Opsional) Verifikasi direktori data baru
Login ke kluster EMR Anda melalui SSH. Untuk informasi lebih lanjut, lihat Login ke kluster.
Jalankan perintah berikut dan pastikan
dataDirmengarah 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:
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.
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/zookeeperPada tab Status, temukan node tersebut dan klik Start di kolom Actions. Isi Execution Reason dan klik OK, lalu klik OK lagi.
Segarkan halaman hingga Health Status menampilkan Healthy untuk node tersebut sebelum melanjutkan ke node berikutnya.
Migrasi selesai ketika semua node menampilkan Health Status sebagai Healthy.