Das ist eine naive Frage, aber ich bin neu im NoSQL-Paradigma und weiß nicht viel darüber. Also, wenn mir jemand helfen kann, den Unterschied zwischen HBase und Hadoop klar zu verstehen, oder wenn ich 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 Rohdaten (Dateien) in HDFS und HBase ist eine Datenbank-Engine oberhalb von Hadoop, die im Wesentlichen mit strukturierten Daten anstelle von Rohdaten arbeitet. Hbase bietet genau wie SQL eine logische Ebene über HDFS. Ist es richtig?
Bitte zögern Sie nicht mich zu korrigieren.
Vielen Dank.
Hadoop besteht im Grunde aus drei Dingen: einem FS (Hadoop Distributed File System)), einem Berechnungsframework (MapReduce) und einer Verwaltungsbrücke (Yet Another Resource Negotiator) Eine verteilte Methode (bietet schnelleren Lese-/Schreibzugriff) und eine redundante Methode (bietet bessere Verfügbarkeit) .MapReduce ermöglicht die verteilte und parallele Verarbeitung dieser großen Datenmengen .MapReduce ist jedoch nicht nur auf HDFS beschränkt Die zufällige Lese-/Schreibfunktion 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. HBase speichert Daten in Spaltenform als Schlüssel/Wert-Paare, während HDFS Daten als Flatfiles speichert. Einige der herausragenden Merkmale beider Systeme sind:
Hadoop
HBase
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.
Apache Hadoop Projekt enthält vier Schlüsselmodule
HBase ist eine skalierbare, verteilte Datenbank, die die strukturierte Speicherung von Daten für große Tabellen unterstützt. Genau wie Bigtable
den vom Google-Dateisystem bereitgestellten verteilten Datenspeicher nutzt, bietet Apache HBase zusätzlich zu Hadoop und HDFS Bigtable-ähnliche Funktionen.
Wann ist HBase anzuwenden ?:
HBase hat jedoch einige Einschränkungen
Zusammenfassung:
Berücksichtigen Sie HBase, wenn Sie Daten nach Schlüssel laden, Daten nach Schlüssel (oder Bereich) suchen, Daten nach Schlüssel liefern, Daten nach Schlüssel abfragen oder Daten nach Zeilen speichern, die nicht gut mit einem Schema übereinstimmen.
Schauen Sie sich Do's and Don't von HBase aus dem cloudera Blog an.
Hadoop verwendet das verteilte Dateisystem, d. H. HDFS, zum Speichern von BigData. Um diese Einschränkungen zu überwinden, wurden jedoch bestimmte Einschränkungen von HDFS und Inorder eingeführt. So entstanden NoSQL-Datenbanken wie HBase, Cassandra und Mongodb.
Hadoop kann nur Batch-Verarbeitung durchführen, und auf Daten wird nur sequentiell zugegriffen. Das bedeutet, dass der gesamte Datensatz durchsucht werden muss, selbst für die einfachsten Jobs. 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 einen beliebigen Datenpunkt in einer einzigen Zeiteinheit zuzugreifen (wahlfreier Zugriff).
Wie alle anderen Dateisysteme bietet HDFS Speicher, jedoch fehlertolerant mit hohem Durchsatz und geringerem Risiko für Datenverlust (aufgrund der Replikation). Da HDFS ein Dateisystem ist, verfügt es über keinen wahlfreien Lese- und Schreibzugriff. Hier kommt HBase ins Spiel. Es handelt sich um einen verteilten, skalierbaren Big-Data-Speicher, der Googles BigTable nachempfunden ist. Cassandra ist etwas ähnlich zu hbase.
Hinweis:
Überprüfen Sie die HDFS-Dämonen (grün hervorgehoben) wie DataNode (Server mit zusammengestellten Regionen) und NameNode im Cluster mit sowohl HBase- als auch Hadoop-HDFS
[~ # ~] hdfs [~ # ~] ist ein verteiltes Dateisystem, das sich gut zum Speichern großer Dateien eignet. Dies ermöglicht keine schnelle Suche nach einzelnen Datensätzen in Dateien.
HBase baut dagegen auf HDFS auf und bietet schnelle Datensatz-Lookups (und -Updates) für große Tabellen. Dies kann manchmal zu konzeptioneller Verwirrung führen. HBase speichert Ihre Daten intern in indizierten "StoreFiles", die für Hochgeschwindigkeitssuchen in HDFS vorhanden sind.
Wie sieht das aus?
Nun, auf Infrastrukturebene hat jede Salve-Maschine im Cluster folgende Dämonen
Wie ist es schnell mit Lookups?
Mit HBase können schnelle Suchvorgänge in HDFS (manchmal auch in anderen verteilten Dateisystemen) als zugrunde liegender Speicher unter Verwendung des folgenden Datenmodells durchgeführt werden
Tabelle
Reihe
Säule
Spaltenfamilie
Spaltenqualifikator
Zelle
Zeitstempel
Client-Leseanforderungsfluss:
Was ist eine Metatabelle im obigen Bild?
Nach all den Informationen berührt der HBase-Lesefluss zum Nachschlagen diese Entitäten
- Zunächst sucht der Scanner nach den Zeilenzellen im Blockcache - dem Lesecache. Kürzlich gelesene Schlüsselwerte werden hier zwischengespeichert und die zuletzt verwendeten werden gelöscht, wenn Speicher benötigt wird.
- Als nächstes durchsucht der Scanner den MemStore , den Schreibcache im Speicher, der die letzten Schreibvorgänge enthält.
- Wenn der Scanner nicht alle Zeilenzellen im MemStore und Block Cache findet, verwendet HBase die Block Cache-Indizes und Bloom-Filter zum Laden von HFiles . in den Speicher, der die Zielzeilenzellen enthalten kann.
quellen und weitere Informationen:
Referenz: http://www.quora.com/Was-ist-der-Unterschied-zwischen-HBASE-und-HDFS-in-Hadoop
Hadoop ist eine allgemeine Bezeichnung für mehrere Subsysteme: 1) HDFS. Ein verteiltes Dateisystem, das Daten über einen Cluster von Computern verteilt, wobei auf Redundanz usw. geachtet wird. 2) Map Reduce. Ein Job-Management-System auf HDFS-Basis - zum Verwalten von kartenreduzierten (und anderen) Jobs, die die in HDFS gespeicherten Daten verarbeiten.
Grundsätzlich handelt es sich um ein Offline-System. Sie speichern Daten in HDFS und können sie durch Ausführen von Jobs verarbeiten.
HBase dagegen in einer spaltenbasierten Datenbank. Es verwendet HDFS als Speicher - das sich um Backup\Redundency\etc kümmert, aber es ist ein "Online Store" - was bedeutet, dass Sie es nach bestimmten Zeilen\rows etc abfragen und einen sofortigen Wert erhalten können.