HBase Architektur: Anwendungsfälle, Komponenten und Datenmodell
⚡ Intelligente Zusammenfassung
Die HBase-Architektur besteht aus vier koordinierenden Komponenten – HMaster, Region Servers, ZooKeeper und HDFS –, die Daten in einem spaltenorientierten Modell speichern, sie in Regionen aufteilen und latenzarme, zufällige Lese- und Schreibvorgänge ermöglichen.
Apache HBase ist eine verteilte, spaltenorientierte NoSQL-Datenbank, die auf einer Datenbank läuft. Hadoop und das Hadoop Distributed File System (HDFS). Dessen Architektur kombiniert einen koordinierenden Master, Region-Server und ZooKeeper, um sehr große Tabellen zu speichern und schnelle zufällige Lese- und Schreibvorgänge zu ermöglichen.
HBase ArchiStruktur und ihre wichtigen Komponenten
Die HBase-Architektur besteht aus folgenden Hauptkomponenten:
- HMeister
- HRegionServer
- HRegionen
- Zookeeper
- HDFS
Nachfolgend ist die detaillierte Architektur von HBase mit ihren Komponenten im Diagramm dargestellt.
HMeister
Der HMaster in HBase ist die Implementierung eines Master-Servers in der HBase-Architektur. Er fungiert als Überwachungsagent für alle im Cluster vorhandenen Region-Server-Instanzen und dient als Schnittstelle für alle Metadatenänderungen. In einer verteilten Clusterumgebung läuft der Master auf dem NameNode. Der Master führt mehrere Hintergrundprozesse aus.
Folgende wichtige Rollen übernimmt HMaster in HBase:
- Spielt eine entscheidende Rolle in Bezug auf Leistung und Wartung der Knoten im Cluster.
- HMaster bietet Administratorleistung und verteilt Dienste an verschiedene Regionsserver.
- HMaster weist Regionsservern Regionen zu.
- HMaster steuert Lastverteilung und Failover, um die Last auf die im Cluster vorhandenen Knoten zu verteilen.
- Wenn ein Client ein Schema oder eine Metadatenoperation ändern möchte, übernimmt HMaster die Verantwortung für diese Operationen.
Einige der von der HMaster-Schnittstelle bereitgestellten Methoden sind in erster Linie metadatenorientierte Methoden:
- Tabelle (createTable, removeTable, aktivieren, deaktivieren)
- ColumnFamily (Spalte hinzufügen, Spalte ändern)
- Region (verschieben, zuweisen)
Der Client kommuniziert bidirektional mit HMaster und ZooKeeper. Für Lese- und Schreibvorgänge kontaktiert er direkt die HRegion-Server. HMaster ordnet Region-Servern Regionen zu und überprüft im Gegenzug deren Status.
In der gesamten Architektur verwenden wir mehrere Region-Server. Auf den Region-Servern befindet sich ein HLog-Server, der alle Protokolldateien speichert.
HBase-Regionsserver
Wenn ein HBase-Region-Server Lese- und Schreibanfragen vom Client empfängt, weist er diese der entsprechenden Region zu, in der sich die Spaltenfamilie befindet. Der Client kann die HRegion-Server direkt kontaktieren; für die Kommunikation mit den HRegion-Servern ist keine HMaster-Berechtigung erforderlich. Der Client benötigt die Unterstützung des HMasters nur dann, wenn Operationen im Zusammenhang mit Metadaten- und Schemaänderungen erforderlich sind.
HRegionServer ist die Implementierung des Region-Servers. Er ist für die Bereitstellung und Verwaltung von Regionen bzw. den Daten in einem verteilten Cluster zuständig. Die Region-Server laufen auf den Datenknoten des Hadoop-Clusters.
HMaster kann mit mehreren HRegion-Servern kommunizieren und folgende Funktionen ausführen:
- Hosten und Verwalten von Regionen
- Regionen automatisch aufteilen
- Bearbeitung von Lese- und Schreibanfragen
- Direkte Kommunikation mit dem Kunden
HBase-Regionen
HRegions sind die grundlegenden Bausteine eines HBase-Clusters. Sie bestehen aus der Verteilung der Tabellen und setzen sich aus Spaltenfamilien zusammen. Eine Region enthält mehrere Speicher, einen für jede Spaltenfamilie. Sie besteht im Wesentlichen aus zwei Komponenten: dem MemStore und der HFile.
Zookeeper
HBase Zookeeper ZooKeeper ist ein zentraler Überwachungsserver, der Konfigurationsinformationen verwaltet und die verteilte Synchronisierung ermöglicht. Diese verteilte Synchronisierung koordiniert die im Cluster laufenden Anwendungen und stellt Koordinierungsdienste zwischen den Knoten bereit. Wenn ein Client mit Regionen kommunizieren möchte, muss er sich zuerst an ZooKeeper wenden.
Es handelt sich um ein Open-Source-Projekt, das viele wichtige Dienste anbietet.
Von ZooKeeper angebotene Dienstleistungen:
- Pflegt Konfigurationsinformationen
- Bietet verteilte Synchronisierung
- Stellt die Client-Kommunikation mit den regionalen Servern her.
- Bietet temporäre Knoten, die verschiedene Regionsserver repräsentieren.
- Ermöglicht es dem Master-Server, diese temporären Knoten zu verwenden, um verfügbare Server im Cluster zu ermitteln.
- Tracks-Serverausfall und Netzwerkpartitionen
Der Master- und die HBase-Slave-Knoten (Region-Server) registrieren sich bei ZooKeeper. Der Client benötigt Zugriff auf die ZooKeeper-Quorumkonfiguration, um eine Verbindung zum Master- und den Region-Servern herzustellen.
Bei einem Ausfall von Knoten im HBase-Cluster löst das ZooKeeper-Quorum Fehlermeldungen aus und beginnt mit der Reparatur der ausgefallenen Knoten.
HDFS
HDFS ist das Hadoop Distributed Repository. DateisystemWie der Name schon sagt, bietet es eine verteilte Speicherumgebung und ist ein Dateisystem, das für den Betrieb auf Standardhardware konzipiert ist. Es speichert jede Datei in mehreren Blöcken, und um Fehlertoleranz zu gewährleisten, werden die Blöcke in einem Hadoop-Cluster repliziert.
HDFS bietet eine hohe Fehlertoleranz und läuft auf kostengünstiger Standardhardware. Durch das Hinzufügen von Knoten zum Cluster und die Durchführung von Verarbeitung und Speicherung auf Basis solcher Hardware erzielt der Kunde im Vergleich zur bisherigen Konfiguration bessere Ergebnisse.
Hier werden die in jedem Block gespeicherten Daten auf 3 Knoten repliziert, sodass bei Ausfall eines Knotens kein Datenverlust entsteht; es verfügt über einen geeigneten Backup- und Wiederherstellungsmechanismus.
HDFS kommuniziert mit den HBase-Komponenten und speichert große Datenmengen verteilt.
HBase-Datenmodell
Das HBase-Datenmodell besteht aus Tabellen, Zeilen, Spaltenfamilien, Zellen, Spalten und Versionen. HBase-Tabellen enthalten Spaltenfamilien und Zeilen, deren Elemente als Primärschlüssel definiert sind. Eine Spalte in einer Tabelle des HBase-Datenmodells repräsentiert ein Attribut der Objekte.
Das HBase-Datenmodell besteht aus folgenden Elementen:
- Satz Tische
- Jede Tabelle mit Spaltenfamilien und Zeilen
- Jede Tabelle muss ein Element haben, das als Primärschlüssel definiert ist.
- Der Zeilenschlüssel fungiert in HBase als Primärschlüssel.
- Jeder Zugriff auf HBase-Tabellen erfolgt über diesen Primärschlüssel.
- Jede Spalte in HBase bezeichnet ein Attribut, das einem Objekt zugeordnet ist.
HBase-Anwendungsfälle
Nachfolgend finden Sie Beispiele für HBase-Anwendungsfälle mit einer detaillierten Erläuterung der Lösung, die HBase für verschiedene technische Probleme bietet.
| Problem Statement | Lösung |
| Die Telekommunikationsbranche steht vor folgenden technischen Herausforderungen: Speicherung von Milliarden von Call Detail Record (CDR)-Protokolldatensätzen, die im Telekommunikationsbereich generiert werden; Bereitstellung eines Echtzeitzugriffs auf CDR-Protokolle und Abrechnungsinformationen von Kunden; und Bereitstellung einer kostengünstigen Lösung im Vergleich zu herkömmlichen Datenbanksystemen. | HBase wird verwendet, um Milliarden von Zeilen detaillierter Anrufaufzeichnungen zu speichern. Wenn der vorhandenen RDBMS-Datenbank pro Monat 20 TB Daten hinzugefügt werden, verschlechtert sich die Leistung. Um in diesem Anwendungsfall eine große Datenmenge zu verarbeiten, ist HBase die beste Lösung. HBase führt schnelle Abfragen durch und zeigt Aufzeichnungen an. |
| Die Bankenbranche generiert täglich Millionen von Datensätzen. Darüber hinaus benötigt sie eine Analyselösung, die Betrug bei Geldtransaktionen aufdecken kann. | Für die Speicherung, Verarbeitung und Aktualisierung großer Datenmengen sowie für die Durchführung von Analysen ist HBase in Kombination mit verschiedenen Komponenten des Hadoop-Ökosystems eine ideale Lösung. |
Abgesehen davon kann HBase verwendet werden:
- Immer dann, wenn schreibintensive Anwendungen benötigt werden.
- Zur Durchführung von Online-Loganalysen und zur Erstellung von Compliance-Berichten.
Speichermechanismus in HBase
HBase ist eine spaltenorientierte Datenbank, in der Daten in Tabellen gespeichert werden. Die Tabellen sind nach RowId sortiert. Wie unten dargestellt, verfügt HBase über eine RowId, die die Zusammenstellung mehrerer Spaltenfamilien in der jeweiligen Tabelle darstellt.
Die im Schema vorhandenen Spaltenfamilien bestehen aus Schlüssel-Wert-Paaren. Jede Spaltenfamilie umfasst mehrere Spalten. Die Spaltenwerte werden im Arbeitsspeicher gespeichert. Jede Tabellenzelle verfügt über eigene Metadaten, wie beispielsweise einen Zeitstempel und weitere Informationen.
Das spaltenorientierte Speicherlayout mit Zeilenschlüsseln, Spaltenfamilien und Zellen ist unten dargestellt.
Im Folgenden werden die wichtigsten Begriffe erläutert, die ein HBase-Tabellenschema darstellen:
- Tabelle: Sammlung vorhandener Zeilen.
- Zeile: Sammlung von Spaltenfamilien.
- Spaltenfamilie: Sammlung von Spalten.
- Spalte: Sammlung von Schlüssel-Wert-Paaren.
- Namensraum: Logische Gruppeping von Tabellen.
- Zelle: Ein {Zeile, Spalte, Version}-Tupel, das eine Zellendefinition in HBase exakt angibt.
Spaltenorientierte vs. zeilenorientierte Speicherung
Spalten- und zeilenorientierte Speichersysteme unterscheiden sich in ihrem Speichermechanismus. Traditionelle relationale Modelle speichern Daten bekanntlich zeilenbasiert, also als Datenzeilen. Spaltenorientierte Speichersysteme hingegen speichern Datentabellen in Form von Spalten und Spaltenfamilien.
Die folgende Tabelle zeigt einige wichtige Unterschiede zwischen diesen beiden Speichern.
| Spaltenorientierte Datenbank | Zeilenorientierte Datenbank |
| Wird verwendet, wenn es um Verarbeitung und Analyse geht, wie beispielsweise Online Analytical Processing und dessen Anwendungen. | Bei der Online-Transaktionsverarbeitung, beispielsweise im Bank- und Finanzwesen, wird dieser Ansatz verwendet. |
| Die Datenmenge, die in diesem Modell gespeichert werden kann, ist sehr groß und liegt im Petabyte-Bereich. | Es ist für eine kleine Anzahl von Zeilen und Spalten ausgelegt. |
HBase-Lese- und Schreibdaten erklärt
Die Lese- und Schreibvorgänge vom Client in die HFile sind im folgenden Diagramm dargestellt.
Schritt 1) Der Client möchte Daten schreiben und kommuniziert daher zuerst mit dem Region Server und dann mit den Regionen.
Schritt 2) Die Region kontaktiert den MemStore, um die Daten zu speichern, die der Spaltenfamilie zugeordnet sind.
Schritt 3) Zuerst werden die Daten im MemStore gespeichert, dort sortiert und anschließend in die HFile geschrieben. Der MemStore dient hauptsächlich dazu, Daten in einem verteilten Dateisystem anhand des Zeilenschlüssels zu speichern. Er befindet sich im Hauptspeicher des Region-Servers, während HFiles in HDFS geschrieben werden.
Schritt 4) Der Client möchte Daten aus den Regionen lesen.
Schritt 5) Im Gegenzug kann der Client direkt auf den MemStore zugreifen und Daten anfordern.
Schritt 6) Der Client greift auf HFiles zu, um die Daten abzurufen. Die Daten werden vom Client abgerufen.
Der MemStore speichert Änderungen am Datenspeicher im Arbeitsspeicher. Die Hierarchie der Objekte in den HBase-Regionen, von oben nach unten, ist in der folgenden Tabelle dargestellt.
| Tisch | Im HBase-Cluster vorhandene HBase-Tabelle |
| Region | HRegions für die dargestellten Tabellen |
| Shop | Speichert für jede Region der Tabelle einen Eintrag pro Spaltenfamilie. |
| Speicher | Für jeden Datenspeicher und jede Region der Tabelle wird ein MemStore erstellt. Die Daten werden vor dem Speichern in HFiles sortiert. Durch die Sortierung wird die Schreib- und Leseleistung verbessert. |
| StoreFile | StoreFiles für jeden Store für jede Region für die Tabelle |
| Blockieren | In StoreFiles vorhandene Blöcke |
HBase vs. HDFS
HBase läuft auf HDFS und Hadoop. Einige wesentliche Unterschiede zwischen HDFS und HBase betreffen die Datenoperationen und die Datenverarbeitung.
| HBase | HDFS |
| Operationen mit geringer Latenz | Vorgänge mit hoher Latenz |
| Zufälliges Lesen und Schreiben | Einmal schreiben, viele Male lesen |
| Zugriff über Shell-Befehle, eine Client-API in JavaREST, Avro oder Thrift | Der Zugriff erfolgt primär über MapReduce (MR) Jobs |
| Sowohl Speicherung als auch Verarbeitung können durchgeführt werden | Es ist nur für Lagerräume vorgesehen. |
Einige typische IT-Industrieanwendungen nutzen HBase-Operationen zusammen mit Hadoop. Zu diesen Anwendungen gehören Börsendaten und Online-Banking-Datenoperationen, für die HBase die optimale Lösung darstellt. Sobald Ihr Cluster bereit ist, können Sie Daten in HBase lesen und schreiben or HBase installieren auf einem frischen Knoten.




