Video: Apache Hadoop ZooKeeper - Chapter 1 Intro into ZooKeeper 2024
Zookeeper adalah server terdistribusi yang secara kolektif menyediakan layanan koordinasi dan sinkronisasi yang andal untuk aplikasi berkerumun. Diakui, nama "Zookeeper" pada mulanya mungkin tampak aneh, tapi ketika Anda mengerti apa yang dilakukannya untuk cluster HBase, Anda bisa melihat logika di baliknya. Saat Anda sedang membangun dan melakukan debug aplikasi terdistribusi "itu kebun binatang di luar sana," jadi Anda harus meletakkan Zookeeper di tim Anda.
Kelompok HBase bisa sangat besar dan mengkoordinasikan operasi MasterServer, RegionServer, dan klien bisa menjadi tugas yang menakutkan, tapi di situlah Zookeeper memasuki gambar. Seperti pada HBase, cluster Zookeeper biasanya berjalan pada server x86 komoditas berbiaya rendah.
Setiap server x86 individu menjalankan satu proses perangkat lunak Zookeeper (selanjutnya disebut server Zookeeper), dengan satu server Zookeeper yang dipilih oleh ansambel sebagai pemimpin dan seluruh server adalah pengikut. Ensemble Zookeeper diatur oleh prinsip kuorum mayoritas.
Konfigurasi dengan satu server Zookeeper didukung untuk tujuan pengujian dan pengembangan, namun jika Anda menginginkan cluster yang andal yang dapat mentolerir kegagalan server, Anda perlu menyebarkan setidaknya tiga server Zookeeper untuk mencapai kuorum mayoritas.
Jadi, berapa banyak server Zookeeper yang Anda butuhkan? Lima adalah minimum yang direkomendasikan untuk penggunaan produksi, tapi Anda benar-benar tidak ingin pergi dengan minimum. Ketika Anda memutuskan untuk merencanakan ansambel Zookeeper Anda, ikuti rumus sederhana ini: 2F + 1 = N di mana F adalah jumlah kegagalan yang dapat Anda terima di cluster Zookeeper Anda dan N adalah jumlah total server Zookeeper yang harus Anda gunakan.
Lima direkomendasikan karena satu server dapat dimatikan untuk perawatan namun cluster Zookeeper masih dapat mentolerir satu kegagalan server.
Zookeeper menyediakan koordinasi dan sinkronisasi dengan apa yang mereka sebut znodes , yang disajikan sebagai pohon direktori dan menyerupai nama path file yang akan Anda lihat di sistem berkas Unix. Znodes melakukan menyimpan data namun tidak banyak bicara - saat ini kurang dari 1 MB secara default. Ide di sini adalah bahwa Zookeeper menyimpan znodes di memori dan bahwa znode berbasis memori ini menyediakan akses klien yang cepat untuk koordinasi, status, dan fungsi vital lainnya yang dibutuhkan oleh aplikasi terdistribusi seperti HBase. Zookeeper mereplikasi znodes di ansambel jadi jika server gagal, data znode masih tersedia asalkan kuorum mayoritas server masih aktif dan berjalan.
Konsep Zookeeper utama lainnya menyangkut bagaimana znode dibaca (versus menulis) ditangani. Setiap server Zookeeper dapat menangani pembacaan dari klien, termasuk pemimpinnya, namun hanya pemimpin yang menerbitkan
atom znode yang menulis - menulis bahwa entah benar-benar berhasil atau benar-benar gagal. Ketika permintaan menulis znode tiba di node pemimpin, pemimpin menyiarkan permintaan tulis ke simpul pengikut dan kemudian menunggu sebagian besar pengikut untuk mengakui znode menulis lengkap. Setelah pengakuan, pemimpin menerbitkan znode menulis sendiri dan kemudian melaporkan status penyelesaian yang berhasil ke klien.
Znodes memberikan beberapa jaminan yang sangat kuat. Ketika klien Zookeeper (seperti HBase RegionServer) menulis atau membaca znode, operasinya
atom . Ini benar-benar berhasil atau benar-benar gagal - tidak ada sebagian membaca atau menulis. Tidak ada klien pesaing lain yang dapat menyebabkan operasi baca atau tulis gagal. Selain itu, znode memiliki daftar kontrol akses (ACL) yang terkait dengannya untuk keamanan, dan mendukung versi, cap waktu dan pemberitahuan kepada klien saat perubahannya terjadi.
Zookeeper mereplikasi znodes di ansambel jadi jika server gagal, data znode masih tersedia asalkan kuorum mayoritas server masih aktif dan berjalan. Ini berarti bahwa menulis ke znode manapun dari server Zookeeper manapun harus disebarkan di seluruh ensemble. Pemimpin Zookeeper mengelola operasi ini.
Pendekatan penulisan znode ini dapat menyebabkan pengikut jatuh di belakang pemimpin dalam waktu singkat. Zookeeper memecahkan masalah potensial ini dengan memberikan perintah sinkronisasi. Klien yang tidak dapat mentolerir kurangnya sinkronisasi sementara ini di dalam cluster Zookeeper dapat memutuskan untuk mengeluarkan perintah sinkronisasi sebelum membaca znodes.