Unterschied zwischen HBase und Hadoop / HDFS

130

Dies ist eine naive Frage, aber ich bin neu im NoSQL-Paradigma und weiß nicht viel darüber. Wenn mir jemand helfen kann, den Unterschied zwischen HBase und Hadoop klar zu verstehen, oder wenn ich einige Hinweise gebe, die mir helfen könnten, den Unterschied zu verstehen.

Bis jetzt habe ich einige Nachforschungen angestellt und gem. Nach meinem Verständnis bietet Hadoop ein Framework für die Arbeit mit Rohdatenblöcken (Dateien) in HDFS, und HBase ist eine Datenbank-Engine über Hadoop, die grundsätzlich mit strukturierten Daten anstelle von Rohdatenblöcken arbeitet. Hbase bietet genau wie SQL eine logische Schicht über HDFS. Ist es richtig?

Bitte zögern Sie nicht, mich zu korrigieren.

Vielen Dank.

Dhaval Shah
quelle
7
Vielleicht sollte der Fragentitel dann "Unterschied zwischen HBase und HDFS" sein?
Matt Ball

Antworten:

248

Hadoop besteht im Wesentlichen aus drei Dingen: einem FS (Hadoop Distributed File System), einem Berechnungsframework (MapReduce) und einer Verwaltungsbrücke (Yet Another Resource Negotiator). Mit HDFS können Sie große Datenmengen verteilt (schnellerer Lese- / Schreibzugriff) und redundant (bessere Verfügbarkeit) speichern. Mit MapReduce können Sie diese riesigen Daten verteilt und parallel verarbeiten. MapReduce ist jedoch nicht nur auf HDFS beschränkt. Als FS fehlt HDFS die Fähigkeit zum zufälligen Lesen / Schreiben. Es ist gut für den sequentiellen Datenzugriff. Und hier kommt HBase ins Spiel. Es handelt sich um eine NoSQL-Datenbank, die auf Ihrem Hadoop-Cluster ausgeführt wird und Ihnen zufälligen Lese- / Schreibzugriff in Echtzeit auf Ihre Daten bietet.

Sie können sowohl strukturierte als auch unstrukturierte Daten in Hadoop und HBase speichern. Beide bieten Ihnen mehrere Mechanismen für den Zugriff auf die Daten, z. B. die Shell und andere APIs. Und HBase speichert Daten als Schlüssel / Wert-Paare in einer Spaltenform, während HDFS Daten als flache Dateien speichert. Einige der herausragenden Merkmale beider Systeme sind:

Hadoop

  1. Optimiert für den Streaming-Zugriff auf große Dateien.
  2. Folgt der Ideologie, einmal zu schreiben und viele zu lesen.
  3. Unterstützt kein zufälliges Lesen / Schreiben.

HBase

  1. Speichert Schlüssel / Wert-Paare in Spaltenform (Spalten werden als Spaltenfamilien zusammengefasst).
  2. Bietet Zugriff auf kleine Datenmengen mit geringer Latenz innerhalb eines großen Datensatzes.
  3. Bietet ein flexibles Datenmodell.

Hadoop eignet sich am besten für die Offline-Stapelverarbeitung, während HBase verwendet wird, wenn Sie Echtzeitanforderungen haben.

Ein analoger Vergleich wäre zwischen MySQL und Ext4.

Tariq
quelle
Was ist mit der Verwendung von hbase als Datenkuchen für sehr große Datenmengen (kleine Dateien)? Kann er so viele Daten wie HDFS verwalten?
Mehdi TAZI
@ MehdiTAZI auf jeden Fall. HBase läuft auf HDFS, sodass Sie sich keine Sorgen um die Skalierbarkeit machen müssen. Sie müssen nur sicherstellen, dass Sie HBase verwenden, wie es verwendet werden sollte, um maximale Leistung zu erzielen
Tariq
Was ist mit betrieblichen Problemen?
Mehdi TAZI
Ich würde nicht sagen, dass HBase der Albtraum des Ops-Teams ist, aber es gibt einige Bereiche, in denen es noch Verbesserungsmöglichkeiten gibt, und die Community arbeitet wirklich hart daran, dies zu beheben. Das gilt aber für jede Software. IMHO gibt es kein problemsicheres Tool / Technologie. Wenn es Ihren Anforderungen entspricht, sollten Sie es auf jeden Fall ausprobieren. Es ist ein erstaunliches Werkzeug, um Ihre zufälligen Lese- / Schreibanforderungen in Echtzeit zu erfüllen.
Tariq
22

Das Apache Hadoop- Projekt umfasst vier Schlüsselmodule

  1. Hadoop Common : Die allgemeinen Dienstprogramme, die die anderen Hadoop-Module unterstützen.
  2. Hadoop Distributed File System (HDFS ™) : Ein verteiltes Dateisystem, das Zugriff auf Anwendungsdaten mit hohem Durchsatz bietet.
  3. Hadoop YARN : Ein Framework für die Jobplanung und die Verwaltung von Clusterressourcen .
  4. Hadoop MapReduce : Ein YARN- basiertes System zur parallelen Verarbeitung großer Datenmengen.

HBase ist eine skalierbare, verteilte Datenbank, die die strukturierte Datenspeicherung für große Tabellen unterstützt. Ebenso wie BigtableApache HBase den verteilten Datenspeicher des Google-Dateisystems nutzt, bietet es Bigtable-ähnliche Funktionen zusätzlich zu Hadoop und HDFS.

Wann HBase zu verwenden ist:

  1. Wenn Ihre Anwendung ein variables Schema hat, bei dem jede Zeile leicht unterschiedlich ist
  2. Wenn Sie feststellen, dass Ihre Daten in Sammlungen gespeichert sind, ist dies alles auf demselben Wert festgelegt
  3. Wenn Sie zufälligen Lese- / Schreibzugriff in Echtzeit auf Ihre Big Data benötigen.
  4. Wenn Sie beim Speichern oder Abrufen einen schlüsselbasierten Zugriff auf Daten benötigen.
  5. Wenn Sie eine große Datenmenge mit einem vorhandenen Hadoop-Cluster haben

HBase weist jedoch einige Einschränkungen auf

  1. Es kann nicht für klassische Transaktionsanwendungen oder sogar für relationale Analysen verwendet werden.
  2. Es ist auch kein vollständiger Ersatz für HDFS, wenn MapReduce in großen Mengen ausgeführt wird.
  3. Es spricht kein SQL, hat kein Optimierungsprogramm, unterstützt keine Cross-Record-Transaktionen oder Joins.
  4. Es kann nicht mit komplizierten Zugriffsmustern (wie Joins) verwendet werden.

Zusammenfassung:

Berücksichtigen Sie HBase, wenn Sie Daten nach Schlüssel laden, Daten nach Schlüssel (oder Bereich) suchen, Daten nach Schlüssel bereitstellen, Daten nach Schlüssel abfragen oder Daten nach Zeilen speichern, die nicht gut mit einem Schema übereinstimmen.

Werfen Sie einen Blick auf Do's and Don't of HBase aus dem Cloudera- Blog.

Ravindra Babu
quelle
Was ist mit der Verwendung von hbase als Datenkuchen für sehr große Datenmengen (kleine Dateien)? Kann er so viele Daten wie HDFS verwalten?
Mehdi TAZI
1
Wenn Sie viele kleine Dateien erstellen, ist je nach Zugriffsmuster möglicherweise ein anderer Speichertyp besser geeignet. Die Datenbank speichert Daten in MapFiles (indizierte SequenceFiles) und ist eine gute Wahl, wenn Sie Streaming im MapReduce-Stil durchführen müssen Analysen mit dem gelegentlichen zufälligen Nachschlagen
Ravindra babu
4

Hadoop verwendet ein verteiltes Dateisystem, dh HDFS zum Speichern von BigData. Es gibt jedoch bestimmte Einschränkungen von HDFS und Inorder, um diese Einschränkungen zu überwinden. Es wurden NoSQL-Datenbanken wie HBase, Cassandra und Mongodb eingerichtet.

Hadoop kann nur Stapelverarbeitung durchführen, und auf Daten wird nur nacheinander zugegriffen. Das bedeutet, dass man den gesamten Datensatz selbst nach den einfachsten Jobs durchsuchen muss. Ein großer Datensatz führt bei der Verarbeitung zu einem weiteren großen Datensatz, der ebenfalls nacheinander verarbeitet werden sollte. Zu diesem Zeitpunkt ist eine neue Lösung erforderlich, um auf jeden Datenpunkt in einer einzigen Zeiteinheit zuzugreifen (Direktzugriff).

Wie alle anderen Dateisysteme bietet HDFS Speicherplatz, jedoch fehlertolerant mit hohem Durchsatz und geringerem Risiko für Datenverlust (aufgrund der Replikation). Da HDFS jedoch ein Dateisystem ist, fehlt HDFS der zufällige Lese- und Schreibzugriff. Hier kommt HBase ins Spiel. Es handelt sich um einen verteilten, skalierbaren Big Data-Speicher, der dem BigTable von Google nachempfunden ist. Cassandra ist hbase etwas ähnlich.

Praveen Mulchandani
quelle
4

Sowohl HBase als auch HDFS in einem Bild

Sowohl HBase als auch HDFS in einem Bild

Hinweis:

Überprüfen Sie die HDFS-Dämonen (grün hervorgehoben) wie DataNode (zusammengestellte Regionsserver) und NameNode im Cluster mit HBase- und Hadoop-HDFS

HDFS ist ein verteiltes Dateisystem, das sich gut zum Speichern großer Dateien eignet. Dies bietet keine schnelle Suche nach einzelnen Datensätzen in Dateien.

HBase hingegen basiert auf HDFS und bietet schnelle Datensatzsuche (und -aktualisierungen) für große Tabellen. Dies kann manchmal zu konzeptioneller Verwirrung führen. HBase speichert Ihre Daten intern in indizierten "StoreFiles", die in HDFS für Hochgeschwindigkeitssuchen vorhanden sind.

Wie sieht das aus?

Nun, auf Infrastrukturebene hat jede Salbenmaschine im Cluster folgende Dämonen

  • Region Server - HBase
  • Datenknoten - HDFS

Slave-Maschine

Wie schnell geht es mit Lookups?

HBase erzielt mithilfe des folgenden Datenmodells eine schnelle Suche in HDFS (manchmal auch in anderen verteilten Dateisystemen) als zugrunde liegenden Speicher

  • Tabelle

    • Eine HBase-Tabelle besteht aus mehreren Zeilen.
  • Reihe

    • Eine Zeile in HBase besteht aus einem Zeilenschlüssel und einer oder mehreren Spalten mit zugeordneten Werten. Zeilen werden beim Speichern alphabetisch nach dem Zeilenschlüssel sortiert. Aus diesem Grund ist das Design des Zeilenschlüssels sehr wichtig. Ziel ist es, Daten so zu speichern, dass verwandte Zeilen nahe beieinander liegen. Ein allgemeines Zeilenschlüsselmuster ist eine Website-Domain. Wenn Ihre Zeilenschlüssel Domänen sind, sollten Sie sie wahrscheinlich in umgekehrter Reihenfolge speichern (org.apache.www, org.apache.mail, org.apache.jira). Auf diese Weise befinden sich alle Apache-Domänen in der Tabelle nahe beieinander und werden nicht basierend auf dem ersten Buchstaben der Unterdomäne verteilt.
  • Säule

    • Eine Spalte in HBase besteht aus einer Spaltenfamilie und einem Spaltenqualifizierer, die durch ein: (Doppelpunkt-) Zeichen begrenzt sind.
  • Spaltenfamilie

    • Spaltenfamilien ordnen eine Reihe von Spalten und ihre Werte physisch zu, häufig aus Leistungsgründen. Jede Spaltenfamilie verfügt über eine Reihe von Speichereigenschaften, z. B. ob ihre Werte im Speicher zwischengespeichert werden sollen, wie ihre Daten komprimiert oder ihre Zeilenschlüssel codiert werden und andere. Jede Zeile in einer Tabelle hat dieselben Spaltenfamilien, obwohl in einer bestimmten Zeile möglicherweise nichts in einer bestimmten Spaltenfamilie gespeichert ist.
  • Spaltenqualifizierer

    • Ein Spaltenqualifizierer wird einer Spaltenfamilie hinzugefügt, um den Index für ein bestimmtes Datenelement bereitzustellen. Bei einem Inhalt einer Spaltenfamilie kann ein Spaltenqualifizierer content: html und ein anderer content: pdf sein. Obwohl Spaltenfamilien bei der Tabellenerstellung festgelegt werden, sind Spaltenqualifizierer veränderbar und können sich zwischen den Zeilen stark unterscheiden.
  • Zelle

    • Eine Zelle ist eine Kombination aus Zeile, Spaltenfamilie und Spaltenqualifizierer und enthält einen Wert und einen Zeitstempel, die die Version des Werts darstellen.
  • Zeitstempel

    • Neben jedem Wert wird ein Zeitstempel geschrieben, der die Kennung für eine bestimmte Version eines Werts darstellt. Standardmäßig stellt der Zeitstempel die Zeit auf dem RegionServer dar, zu der die Daten geschrieben wurden. Sie können jedoch einen anderen Zeitstempelwert angeben, wenn Sie Daten in die Zelle einfügen.

Client-Leseanforderungsfluss:

Client-Leseanforderungsfluss

Was ist die Metatabelle im obigen Bild?

Metatabelle

Nach all den Informationen berührt der HBase-Lesefluss diese Entitäten

  1. Zunächst sucht der Scanner nach den Zeilenzellen im Block-Cache - dem Lese-Cache. Kürzlich gelesene Schlüsselwerte werden hier zwischengespeichert, und zuletzt verwendete Werte werden entfernt, wenn Speicher benötigt wird.
  2. Als Nächstes sucht der Scanner im MemStore , dem Schreibcache im Speicher, der die letzten Schreibvorgänge enthält.
  3. Wenn der Scanner nicht alle Zeilenzellen im MemStore und Block Cache findet, verwendet HBase die Block Cache-Indizes und Bloom-Filter, um HFiles in den Speicher zu laden , der möglicherweise die Zielzeilenzellen enthält.

Quellen und weitere Informationen:

  1. HBase-Datenmodell
  2. HBase architecute
mrsrinivas
quelle
1

Referenz: http://www.quora.com/Was-ist-der- Unterschied zwischen- HBASE-und- HDFS-in- Hadoop

Hadoop ist ein allgemeiner Name für mehrere Subsysteme: 1) HDFS. Ein verteiltes Dateisystem, das Daten auf einen Cluster von Computern verteilt, die sich um Redundanz usw. kümmern. 2) Map Reduce. Ein Jobverwaltungssystem über HDFS - zum Verwalten von Jobs mit Kartenreduzierung (und anderen Typen), die die in HDFS gespeicherten Daten verarbeiten.

Grundsätzlich bedeutet dies, dass es sich um ein Offline-System handelt. Sie speichern Daten in HDFS und können sie durch Ausführen von Jobs verarbeiten.

HBase hingegen in einer spaltenbasierten Datenbank. Es verwendet HDFS als Speicher - der sich um Backup \ Redundency \ etc kümmert, aber es ist ein "Online-Shop" - was bedeutet, dass Sie es nach bestimmten Zeilen \ Zeilen usw. abfragen und einen sofortigen Wert erhalten können.

Jiaji Li
quelle
0

HDFS ist ein Java-basiertes verteiltes Dateisystem, mit dem Sie große Datenmengen auf mehreren Knoten in einem Hadoop-Cluster speichern können. Während HBase eine NoSQL-Datenbank ist (ähnlich wie NTFS und MySQL).

Da sowohl HDFS als auch HBase alle Arten von Daten wie strukturiert, halbstrukturiert und unstrukturiert in einer verteilten Umgebung speichern.

Unterschiede zwischen HDFS & HBase

  • HBase bietet Zugriff auf kleine Datenmengen in großen Datenmengen mit geringer Latenz, während HDFS Operationen mit hoher Latenz bietet.
  • HBase unterstützt zufälliges Lesen und Schreiben, während HDFS WORM unterstützt (einmal schreiben, viele Male lesen oder mehrmals).
  • Auf HDFS wird grundsätzlich oder hauptsächlich über MapReduce-Jobs zugegriffen, während auf HBase über Shell-Befehle, Java-API, REST, Avro oder Thrift-API zugegriffen wird.

HDFS speichert große Datenmengen in einer verteilten Umgebung und nutzt die Stapelverarbeitung für diese Daten.

Während HBase Daten spaltenorientiert speichert, wobei jede Spalte zusammen gespeichert wird, wird das Lesen mithilfe der Echtzeitverarbeitung schneller.

Geben Sie hier die Bildbeschreibung ein

Ghulam Dastgeer
quelle