5.1 Grundlagen von HBase

Warum sollte man nichtrelationale Datenbanken (bzw. NoSQL) wie beispielsweise HBase einsetzen?

  • Wenn du vorwiegend eine einfache Anfrage sehr oft stellen musst, sind NoSQL-Datenbanken meist die bessere Wahl.
  • Bei sehr großen Datenmengen, wie sie Facebook oder Amazon vorhalten, ist eine dezentrale skalierbare Speichermöglichkeit notwendig, welche relationale Datenbankmanagementsysteme kaum bieten können.
  • Für analytische Abfragen eignen sich Hadoop-Services wie Hive, Spark oder Pig am Besten, nur bei sehr großen Datensätzen sind NoSQL-Datenbankmanagementsysteme eine Überlegung wert.

Was ist HBase?

  • Hbase ist eine OpenSource-, nichtrelationale Datenbank (bzw. eine NoSQL-Datenbank).
  • Wie jede andere NoSQL-Datenbank kann hier jede Art von Daten gespeichert werden.
  • Es ist nach Googles „BigTable“-Modell aufgebaut, welches als Ursprungsprinzip für eine verteilte Datenspeicherung auf einem Rechnerverbund gilt.
  • HBase basiert auf dem Datenspeicherungssystem HDFS und ermöglicht eine fehlertolerante Speicherung.
  • HBase selbst ist in Java geschrieben, während HBase-Anwendungen auch in REST, Avro oder Thrift API geschrieben sein können.
  • Beispiel: Mit HBase wird eine Datenbank mit Millionen von Kundenmailadressen verwaltet. Man soll herausfinden, in wie vielen Mails das Wort „Beschwerde“ auftaucht. Mittels HBase ist es möglich, diese Anfrage innerhalb von Sekunden oder sogar in Echtzeit durchzuführen.

Wie verwende ich HBase?

Da es sich bei HBase nicht um eine relationale Datenbank handelt, werden auch nicht die üblichen SQL-Anweisungen verstanden. Man interagiert mit HBase mit den sogenannten „CRUD“-Kommandos. „CRUD“ steht dabei für Create, Read, Update und Delete. Zum Interagieren mit HBase verwendet man die sogenannten CRUD-APIs.

Wie ist HBase aufgebaut und wie funktioniert es?

HBase selbst ist in verschiedene „Region Server“ aufgeteilt, damit die Daten verteilt auf verschiedenen Servern abgelegt werden können. Mit „Region“ ist hier ein bestimmter Schlüsselbereich gemeint, keine geografische Unterteilung. Die Region Servers können ohne Probleme erweitert werden. Die Verwaltung wird komplett von HBase übernommen. Die Region Server sitzen dabei auf dem HDFS-Dateisystem. 

Wenn eine Anwedung mit HBase interagieren möchte, wird nicht direkt der „HMaster“ angesprochen. Die Masterserver mit den Namen „HMaster“  pflegen die Metadatenbank und wissen, wo welche Datei abgelegt ist. Zookeeper wird stattdessen von den Anwendungen direkt angesprochen. Zookeeper ist ein hochverfügbares System, welches die Ressourcenauslastung der meisten Hadoop-Services überwacht. SO weiß Zookeeper beispielsweise auch, welcher „HMaster“ gerade der richtige zum Ansprechen ist. Die Anfrage wird also von Zookeeper an den HMaster weitergeleitet, welcher dann die Datenverarbeitung zu den Region Servers anstößt und überwacht.

Wie kann ich auf HBase zugreifen?

  • mittels der HBase-Shell auf der Kommandozeile
  • über die Java API
  • mittels Spark, Hive oder Pig
  • über Rest Services
  • über den Thrift Service
  • über den Avro Service

Weiter geht es mit: 5.2 Grundlagen von Cassandra und die beste Datenbank für deine Hadoop-Anwendung bestimmen