Video: HBase Tutorial | Introduction to HBase | What is HBase? | HBase Tutorial for Beginners 2024
Zookeeper è un cluster distribuito di server che fornisce collettivamente servizi di sincronizzazione e sincronizzazione affidabili per le applicazioni in cluster. Certo, il nome "Zookeeper" potrebbe sembrare inizialmente una scelta strana, ma quando capisci cosa fa per un cluster HBase, puoi vedere la logica dietro di esso. Quando costruisci e esegui il debug di applicazioni distribuite "è uno zoo là fuori", quindi dovresti mettere Zookeeper nella tua squadra.
I cluster HBase possono essere enormi e coordinare le operazioni di MasterServer, RegionServer e client può essere un compito scoraggiante, ma è qui che Zookeeper inserisce l'immagine. Come in HBase, i cluster di Zookeeper tipicamente funzionano su server x86 di commodity a basso costo.
Ogni singolo server x86 esegue un singolo processo software Zookeeper (di seguito definito server Zookeeper), con un server Zookeeper eletto dall'ensemble come leader e il resto dei server sono follower. Gli ensemble di zookeeper sono governati dal principio del quorum della maggioranza.
Le configurazioni con un server Zookeeper sono supportate per scopi di test e sviluppo, ma se si desidera un cluster affidabile in grado di tollerare un errore del server, è necessario distribuire almeno tre server Zookeeper per raggiungere il quorum di maggioranza.
Quindi, quanti server Zookeeper ti serviranno? Il cinque è il minimo consigliato per l'uso in produzione, ma davvero non vuoi andare con il minimo indispensabile. Quando decidi di pianificare il tuo ensemble Zookeeper, segui questa semplice formula: 2F + 1 = N dove F è il numero di errori che puoi accettare nel tuo cluster Zookeeper e N è il numero totale di server Zookeeper che devi distribuire.
Cinque è raccomandato perché un server può essere spento per manutenzione ma il cluster Zookeeper può ancora tollerare un errore del server.
Zookeeper fornisce coordinamento e sincronizzazione con ciò che chiama znodes , che vengono presentati come un albero di directory e assomigliano ai nomi dei percorsi di file che vedresti in un file system Unix. Znode fanno memorizzano i dati ma non parlano molto di - attualmente meno di 1 MB di default.
L'idea qui è che Zookeeper memorizza znodi in memoria e che questi znodi basati su memoria forniscono un accesso client veloce per il coordinamento, lo stato e altre funzioni vitali richieste da applicazioni distribuite come HBase. Zookeeper replica gli znodi in tutto il gruppo, quindi se i server falliscono, i dati znode sono ancora disponibili fino a quando un quorum di server di maggioranza è ancora attivo e funzionante.
Un altro concetto di Zookeeper primario riguarda il modo in cui vengono gestite le letture znode (rispetto alle scritture). Qualsiasi server Zookeeper può gestire le letture da un client, incluso il leader, ma solo i problemi del leader atomico scritture znode - scrive che entrambi hanno avuto esito positivo o completamente falliti.
Quando una richiesta di scrittura znode arriva al nodo leader, il leader trasmette la richiesta di scrittura ai nodi follower e quindi attende che la maggior parte dei follower riconosca la scrittura znode completa. Dopo il riconoscimento, il leader invia la stessa znode write e riporta lo stato di completamento al client.
Znode fornisce alcune garanzie molto potenti. Quando un client Zookeeper (come un RegionServer HBase) scrive o legge un znode, l'operazione è atomica . Completamente riesce o fallisce completamente - non ci sono letture o scritture parziali.
Nessun altro cliente in competizione può causare il fallimento dell'operazione di lettura o scrittura. Inoltre, un znode ha un elenco di controllo di accesso (ACL) ad esso associato per sicurezza e supporta le versioni, i timestamp e la notifica ai client quando cambia.
Zookeeper replica gli znodi in tutto il gruppo, quindi se i server falliscono, i dati znode sono ancora disponibili fino a quando un quorum di server di maggioranza è ancora attivo e funzionante. Ciò significa che le scritture su qualsiasi znode da qualsiasi server Zookeeper devono essere propagate attraverso l'ensemble. Il leader dello Zookeeper gestisce questa operazione.
Questo approccio alla scrittura znode può far sì che i follower restino indietro per il leader per brevi periodi. Zookeeper risolve questo potenziale problema fornendo un comando di sincronizzazione. I client che non possono tollerare questa mancanza temporanea di sincronizzazione all'interno del cluster Zookeeper potrebbero decidere di emettere un comando di sincronizzazione prima di leggere znode.