Video: HBase Tutorial | Introduction to HBase | What is HBase? | HBase Tutorial for Beginners 2024
Zookeeper, kümelenmiş uygulamalar için toplu olarak güvenilir eşgüdüm ve senkronizasyon hizmetleri sağlayan dağıtık bir sunucu kümesidir. Kuşkusuz, "Zookeeper" ismi ilk bakışta garip bir seçenek gibi gözükebilir, ancak bir HBase kümesi için ne yaptığını anladığınızda arkasındaki mantığı görebilirsiniz. Dağıtık uygulamaları oluştururken ve hata ayıklarken "hayvanat bahçesi var," dedi, Zookeeper'ı ekibinize yerleştirmelisiniz.
HBase kümeleri büyük olabilir ve MasterServers, RegionServers ve istemcilerin operasyonlarını koordine etmek zor bir görev olabilir, ancak Zookeeper'nın resme girdiği yer budur. HBase'de olduğu gibi, Zookeeper kümeleri genellikle düşük maliyetli emtia x86 sunucularında çalışır.
Her bir x86 sunucusu, topluluk tarafından lider olarak seçilen bir Zookeeper sunucusu ve diğer sunucuların takipçileri olan tek bir Zookeeper yazılım işlemini (bundan sonra Zookeeper sunucusu olarak anılacaktır) çalıştırmaktadır. Zookeeper toplulukları, çoğunluk çoğunluğu ilkesine göre yönetilir.
Bir Zookeeper sunucusuyla yapılandırmalar sınama ve geliştirme amacıyla desteklenir, ancak sunucu hatasına tolere edebilen güvenilir bir küme istiyorsanız, çoğunluk çekirdeğini elde etmek için en az üç Zookeeper sunucusu dağıtmanız gerekir.
Peki kaç tane Zookeeper sunucusuna ihtiyacınız olacak? En azından beşi üretim için önerilir, ancak çıplak minimumla gerçekten gitmek istemezsiniz. Zookeeper topluluğunu planlamaya karar verdiğinizde şu basit formüle uyun: 2F + 1 = N Burada, Zookeeper kümesinde kabul edebileceğiniz arızaların sayısı F, dağıtmanız gereken Zookeeper sunucularının toplam sayısıdır.
Bir sunucu bakım için kapatılabilir, ancak Zookeeper kümesi hala tek bir sunucu hatasına izin verebileceğinden beş önerilir.
Zookeeper, bir dizin ağacı olarak sunulan ve bir Unix dosya sisteminde gördüğünüz dosya yolu adlarına benzeyen, znodes olarak adlandırılanlarla koordinasyon ve senkronizasyon sağlar. Znodes do , ancak konuşmak için çok fazla veri depolamıyor - varsayılan olarak 1 MB'den az.
Buradaki fikir Zookeeper'ın znod'ları bellekte saklaması ve bu bellek tabanlı znodların koordinasyon, durum ve HBase gibi dağıtılmış uygulamalar tarafından gerekli diğer hayati işlevler için hızlı istemci erişimi sağlamasıdır. Zookeeper, topluluk boyunca znod'ları çoğaltır; bu nedenle, sunucular başarısız olursa, çoğunlukla sunucu çoğunluğu hala çalışıyor ve çalışıyorsa, znode verileri hala kullanılabilir.
Başka bir birincil Zookeeper kavramı, znode'un (yazmalara karşı) nasıl işlendiği ile ilgilidir. Herhangi bir Zookeeper sunucusu lider dahil olmak üzere bir istemciden gelen okumaları işleyebilir, ancak yalnızca lider atomik sorunlarını çözebilir znode yazar - tamamen başarılı veya tamamen başarısız olduğunu yazar.
Bir znode yazma isteği lider düğüme geldiğinde, lider yazma talebini takipçi düğümlerine yayınlar ve takipçilerin çoğunun znode yazma tamamlandığını kabul etmesini bekler. Onaydan sonra, lider znode kendisini yazar ve ardından başarılı tamamlanma durumunu müşteriye rapor eder.
Znodes bazı çok güçlü garantiler sağlar. Bir Zookeeper istemcisi (bir HBase RegionServer gibi) bir znode yazar veya okur, işlem atomik olur. Ya tamamen başarır ya da tamamen başarısız olur - kısmi okuma ya da yazma işlemi yoktur.
Başka hiçbir rakip müşteri okuma veya yazma işleminin başarısız olmasına neden olamaz. Buna ek olarak, bir znode'un güvenlik için kendisiyle ilişkili bir erişim kontrol listeleri (ACL) vardır ve değişiklik yaparken istemcilere sürümler, zaman damgaları ve bildirimi destekler.
Zookeeper, topluluk genelinde znodes çoğaltır; böylece sunucular başarısız olursa, çoğunlukla sunucu çoğunluğu hala çalışıyor ve çalışıyorsa, znode verileri hala kullanılabilir. Bu, herhangi bir Zookeeper sunucudan herhangi bir znodeya yazma işlemi topluluk genelinde yayılması gerektiği anlamına gelir. Zookeeper lideri bu işlemi yönetir.
Bu znode yazma yaklaşımı, izleyicilerin kısa sürelerle liderin gerisinde kalmasına neden olabilir. Zookeeper, bir senkronizasyon komutu sağlayarak bu potansiyel problemi çözer. Zookeeper kümesindeki geçici bu senkronizasyon eksikliğini tolere edemeyen müşteriler znodları okumadan önce bir senkronizasyon komutu yayınlamaya karar verebilirler.