Zookeeper und HBase Zuverlässigkeit

Zookeeper ist eine verteilte Cluster von Servern, die zusammen zuverlässige Koordination und Synchronisierungsdienste für geclusterte Anwendungen zur Verfügung stellt. Zugegeben, der Name # 147-Zookeeper # 148- kann auf den ersten Blick eine seltsame Wahl zu sein, aber wenn Sie verstehen, was es tut, für einen HBase Cluster, können Sie die Logik dahinter zu sehen. Wenn Sie das Erstellen und Debuggen von verteilten Anwendungen # 147-es ist ein Zoo gibt, # 148- so sollten Sie Zookeeper in Ihrem Team setzen.

HBase Cluster können riesig und die Koordination der Operationen der MasterServers, RegionServers sein und Kunden kann eine schwierige Aufgabe sein, aber das ist, wo Zookeeper das Bild eintritt. Wie in HBase, Zookeeper Cluster laufen in der Regel auf Low-Cost-Commodity-x86-Server.

Jeder einzelne x86-Server läuft ein einzelnes Zookeeper Software-Prozess (im Folgenden als Zookeeper-Server bezeichnet), mit einem Zookeeper-Server durch das Ensemble als Führer gewählt und die restlichen Server sind Anhänger. Zookeeper Ensembles werden durch das Prinzip der Mehrheits Quorum geregelt.

Konfigurationen mit einem Zookeeper-Server für Test- und Entwicklungszwecke unterstützt, aber wenn Sie einen zuverlässigen Cluster wollen, die Server-Ausfall tolerieren können, müssen Sie mindestens drei Zookeeper Servern bereitstellen Mehrheit Quorum zu erreichen.

bild0.jpg

Also, wie viele Zookeeper-Server benötigen Sie? Fünf ist das Minimum für den produktiven Einsatz empfohlen, aber Sie wollen wirklich nicht mit dem absoluten Minimum zu gehen. Wenn Sie sich entscheiden, Ihre Zookeeper Ensemble zu planen, folgen Sie diesem einfachen Formel: 2F + 1 = N wobei F die Anzahl der Ausfälle können Sie in Ihrem Zookeeper Cluster akzeptieren und N ist die Gesamtzahl der Zookeeper-Server müssen Sie implementieren möchten.

Fünf wird empfohlen, da ein Server für Wartungsarbeiten heruntergefahren werden kann, aber das Zookeeper Cluster kann immer noch ein Server-Ausfall tolerieren.

Zookeeper bietet Koordination und Synchronisation mit dem, was es nennt znodes, welche als Verzeichnisbaum dargestellt und die Dateipfadnamen ähneln Sie in einem Unix-Dateisystem sehen würde. Znodes machen Daten speichern, aber nicht viel zu sprechen - derzeit weniger als 1 MB standardmäßig.

Die Idee dabei ist, dass Zookeeper speichert znodes im Speicher und dass diese speicherbasierte znodes Zugriff schnell Client sorgen für die Koordination, den Status und andere lebenswichtige von verteilten Anwendungen wie HBase erforderlichen Funktionen. Zookeeper repliziert znodes über das Ensemble so, wenn Server ausfallen, die ZNODE Daten noch verfügbar ist, solange eine Mehrheit Quorum von Servern immer noch in Betrieb ist.

Eine weitere primäre Zookeeper Konzept betrifft, wie ZNODE liest (im Vergleich schreibt) behandelt werden. Jeder Zookeeper-Server verarbeiten kann liest von einem Client, einschließlich der Führer, sondern nur die Führer Fragen atomar ZNODE schreibt - schreibt, dass entweder vollständig erfolgreich sein oder komplett ausfallen.

Wenn ein ZNODE Schreibanforderung an der Führungsknoten eintrifft, sendet der Führer die Schreibanforderung an den Folger Knoten und wartet dann auf eine Mehrheit von Anhängern ZNODE schreiben vollständig anzuerkennen. Nach der Bestätigung, gibt der Leiter der ZNODE Schreib selbst und dann meldet den erfolgreichen Abschluss Status an den Client.

Znodes bieten einige sehr mächtige Garantien. Wenn ein Zookeeper-Client (wie zum Beispiel ein HBase RegionServer) schreibt oder eine ZNODE liest, ist der Betrieb atomar. Es gelingt entweder vollständig oder nicht vollständig - es gibt keine Teil liest oder schreibt.

Kein anderer konkurrierender Client kann der Lese- oder Schreibvorgang fehlschlagen. Darüber hinaus hat ein ZNODE eine Zugriffssteuerungslisten (ACL) zugeordnet ist es für die Sicherheit, und es unterstützt die Versionen, Zeitstempel und die Benachrichtigung an Clients, wenn sie sich ändert.

Zookeeper repliziert znodes über das Ensemble so, wenn Server ausfallen, die ZNODE Daten noch verfügbar ist, solange eine Mehrheit Quorum von Servern immer noch in Betrieb ist. Das bedeutet, dass zu jedem ZNODE von jedem Zookeeper Server schreibt müssen über das Ensemble propagiert werden. Der Zoowärter Führer schafft diesen Vorgang.

Dieser ZNODE Schreib Ansatz kann dazu führen, Anhänger hinter dem Führenden für kurze Zeit zu fallen. Zookeeper löst dieses potenzielle Problem durch einen Synchronisationsbefehl bereitstellt. Clients, die nicht diese temporäre Mangel an Synchronisation innerhalb des Zookeeper Cluster tolerieren kann beschließen, vor dem Lesen znodes einen Sync-Befehl zu erteilen.

Menü