Video: Introduction to Hadoop Zookeeper | Edureka 2024
Un grosso cluster di database NoSQL è una cosa ingombrante da gestire. Apache Zookeeper in soccorso! Tenendo traccia di quali nodi si trovano nel cluster, quali sono i dati gestiti da ciascuno e assicurando che i nuovi master siano selezionati quando un master ha esito negativo non sono compiti facili.
Il coordinamento di grandi sistemi distribuiti è, quindi, molto difficile. Sia Hadoop che i database NoSQL distribuiti necessitano di un modo per gestire la configurazione di un intero cluster. Questo processo deve anche essere altamente disponibile in modo che non sia un singolo punto di errore nel sistema generale.
È qui che entra in gioco Apache Zookeeper. Zookeeper fornisce un servizio di coordinamento distribuito e coerente alle transazioni.
Diversi altri prodotti utilizzano Zookeeper per la gestione dei cluster:
-
Apache Hadoop
-
Solr Cloud
-
Neo4j
-
Accumulo
-
HBase
-
Rackspace
-
Zynga
-
Yahoo! (per molti dei suoi servizi)
Zookeeper fornisce una struttura di archiviazione gerarchica in memoria simile a un file system del computer. Questa struttura è gestita dal master attuale Zookeeper e replicata tra gli altri nodi nel cluster. Un cluster Zookeeper è chiamato Zookeeper e nsemble.
Solo il master gestisce gli aggiornamenti (scritture) sull'archiviazione. Questi cambiamenti sono controllati su disco per renderli durevoli e quindi replicati nelle altre istanze di Zookeeper nell'insieme.
Questi servizi memorizzano i dati di configurazione del cluster in Zookeeper. Alcuni di essi memorizzano anche gli intervalli di chiavi per i frammenti del loro database. Ciò consente ai client che utilizzano un database NoSQL che utilizza Zookeeper per comunicare con qualsiasi server Zookeeper nell'insieme. In questo modo, i clienti possono scoprire quali server NoSQL conservano i dati a cui sono interessati.
Osservando quale nodo memorizza quale intervallo di chiavi riduce al minimo il carico sui server NoSQL, poiché non è necessario inoltrare richieste di dati da un nodo NoSQL al nodo che contiene effettivamente i dati.
È anche possibile utilizzare l'archivio dati di Zookeeper per l'archiviazione effimera (memoria che non durerà oltre il riavvio del servizio), utile per l'archiviazione di sessioni o altri dati di runtime.
I server Zookeeper utilizzano questa memoria effimera per determinare chi subentra se un master fallisce. Ogni server crea un znode effimero numerato (file di archiviazione) nello spazio chiave. Se il supervisore dello zoo (leader) subisce un guasto hardware, il proprietario del successivo znodo nella sequenza diventa il master. Questa è una soluzione elegante ed evita l'effetto "mandria" in cui tutti i server comunicano freneticamente tra loro per alcuni secondi per selezionare un nuovo master.
Zookeeper è una grande soluzione Java per i problemi inerenti la gestione coordinata dei sistemi e l'alta disponibilità. È possibile utilizzarlo per implementare servizi altamente disponibili, inclusi i servizi di messaggistica. Pertanto, se è necessario creare un nuovo servizio distribuito, prendere in considerazione l'utilizzo di Zookeeper.