Suchen

Definition Was ist ZooKeeper?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

ZooKeeper ist ein Softwareprojekt der Apache Software Foundation. Mit ZooKeeper lassen sich Services in verteilten Systemen hochverfügbar, performant und redundant bereitstellen. Die Software kommt beispielsweise zur Organisation und Konfiguration von Hadoop-Services zum Einsatz.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

ZooKeeper lässt sich mit „Zoowärter“ ins Deutsche übersetzen. Dieser Begriff leitet sich aus der Aufgabe von ZooKeeper ab, einen „Zoo“ aus verschiedenen Servern und Serverinstanzen zu verwalten, zu synchronisieren, zu konfigurieren und die Services für Clients mit hoher Verfügbarkeit redundant bereitzustellen. Es handelt sich um ein Projekt der Apache Software Foundation. Die Server innerhalb einer von ZooKeeper gemanagten Umgebung tauschen sich untereinander aus und stellen sich ihre Services gegenseitig zur Verfügung. ZooKeeper sorgt dafür, dass sich die verschiedenen Knoten synchronisieren und keine Inkonsistenzen in den Daten auftreten.

Ursprünglich wurde ZooKeeper von Yahoo entwickelt, um eigene Services im Big-Data-Umfeld hochverfügbar bereitzustellen. Bei Apache war ZooKeeper zunächst ein Unterprojekt von Hadoop. Mittlerweile ist es aber ein eigenständiges Top-Level-Projekt von Apache. ZooKeeper hat sich zu einer Art Standard für die Organisation von verteilten Services entwickelt und wird von HBase, Hadoop und anderen Frameworks dieser Art verwendet. Die Software ist Open Source. Unternehmen wie Yahoo, Reddit, Facebook, Twitter oder eBay und viele Weitere setzen sie für eigene Anwendungen ein.

Aufgaben und Services von ZooKeeper

Aufgabe von ZooKeeper ist es, in verteilten Systemen die verschiedenen Server und Serverinstanzen zu koordinieren, verteilte Daten zu managen und robuste Synchronisationstechniken bereitzustellen. Zu den von ZooKeeper zur Verfügung gestellten Services zählen:

  • Namensservice, um Knoten in einem Cluster anhand ihrer Namen zu erkennen und anzusprechen
  • Cluster-Management für das Hinzufügen oder Entfernen von einzelnen Knoten in einem Cluster
  • Verfahren für die Ernennung eines Master-Knotens
  • Synchronisationsservice für das Speichern und Verändern von verteilten Daten
  • Redundanzservice für die Hochverfügbarkeit der Daten und Services trotz Ausfall einzelner Knoten
  • Informationsservice zur Bereitstellung von Statusinformationen der Knoten in Echtzeit
  • Konfigurationsservice zur Bereitstellung von Konfigurationsdaten der Knoten in Echtzeit

Die Services stellen beispielsweise sicher, dass die Konsistenz der Daten erhalten bleibt, wenn in verteilten Systemen verschiedene Server Daten zur gleichen Zeit verändern möchten.

Funktionsweise und Architektur von ZooKeeper

Eine verteilte Anwendung führt verschiedene Tasks auf mehreren über ein Netzwerk verbundenen Systemen aus. Diese Task gilt es zu koordinieren, um sie schnell und effizient zu erledigen. Komplexe Aufgaben, die auf einzelnen Rechnern lange Ausführungszeiten benötigen, lassen sich in verteilten Umgebungen durch Parallelisierung einzelner Tasks und durch Ausnutzung der durch die vielen Maschinen bereitgestellten Ressourcen sehr viel schneller abarbeiten. Eine Gruppe von Rechnern oder Servern, die eine verteilte Anwendung ausführen, nennt sich Cluster. Die einzelnen Maschinen des Clusters werden auch Knoten genannt. Auf die verteilte Anwendung greifen die Clients über Schnittstellen zu.

ZooKeeper stellt sich nach außen als ein einziger Service dar. Er bildet intern jedoch einen Cluster aus mehreren Knoten und Serverinstanzen. Es entsteht ein sogenanntes ZooKeeper Ensemble, das sich selbst organisiert. Hierfür wählen die Knoten einen Master-Knoten (Leader Node), der die führende Rolle zur Synchronisation und Sicherstellung der Konsistenz der Daten übernimmt. Unter anderem empfängt er alle Schreibzugriffe und bestimmt die Reihenfolge der auf den verschiedenen Knoten durchzuführenden Änderungen. Die Knoten sind sogenannte Follower und bestimmen beim Ausfall des Master-Knotens innerhalb kürzester Zeit einen neuen Leader. ZooKeeper selbst agiert wie ein verteiltes Dateisystem. Sämtliche Informationen werden ähnlich wie in einem Dateisystem organisiert. Von einem Wurzelverzeichnis ausgehend sind die ZooKeeper-Nodes hierarchisch angeordnet. Entlang dieses Dateibaums organisieren sich alle Aufgaben.

Vorteile durch den Einsatz von ZooKeeper

ZooKeeper stellt umfassende Services bereit, um die Herausforderungen einer verteilt arbeitenden Anwendung zu meistern. Inkonsistenzen der Daten werden zuverlässig vermieden und die Anwendung mit hoher Verfügbarkeit betrieben. Die wichtigsten Vorteile von ZooKeeper sind:

  • einfache, transparente Koordinationsprozesse für die verteilten Anwendungen und Services
  • Serialisierung von auszuführenden Tasks und Sicherstellung der Datenkonsistenz
  • Steigerung der Verfügbarkeit des Gesamtsystems
  • automatische Failover-Mechanismen beim Ausfall einzelner Systeme
  • einfache und leicht nachvollziehbare hierarchische Struktur ähnlich einem Dateiverzeichnis
  • Steigerung der Performance der verteilten Anwendung
  • einfache Skalierung der Performance und Verfügbarkeit durch das Hinzufügen weiterer Knoten
  • Darstellung nach außen als ein einziger für Clients ansprechbarer Service

(ID:45808826)

Über den Autor