it-swarm.com.de

Unterschied zwischen HBase und Hadoop / HDFS

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.

126
Dhaval Shah

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

  1. Optimiert für den Streaming-Zugriff großer Dateien.
  2. Folgt der Ideologie des einmaligen Lesens.
  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 mit geringer Latenz auf kleine Datenmengen 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.

240
Tariq

Apache Hadoop Projekt enthält 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 den Hochdurchsatzzugriff auf Anwendungsdaten ermöglicht.
  3. Hadoop YARN : Ein Framework für die Auftragsplanung und die Verwaltung von Clusterressourcen.
  4. Hadoop MapReduce : Ein [~ # ~] Garn [~ # ~] basiertes System zur parallelen Verarbeitung großer Datenmengen.

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 ?:

  1. Wenn Ihre Anwendung ein variables Schema hat, bei dem sich jede Zeile geringfügig unterscheidet
  2. Wenn Sie feststellen, dass Ihre Daten in Sammlungen gespeichert sind, sind alle Daten mit demselben Wert verschlüsselt
  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 hat jedoch einige Einschränkungen

  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 für große Stapel ausgeführt wird.
  3. Es spricht kein SQL, verfügt nicht über ein Optimierungsprogramm und 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 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.

21
Ravindra babu

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.

4

Sowohl HBase als auch HDFS in einem Bild

Both HBase and HDFS in one picture

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

  • Regionsserver - HBase
  • Daten Node - HDFS

Slave machine

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

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

    • Eine Zeile in HBase besteht aus einem Zeilenschlüssel und einer oder mehreren Spalten, denen Werte zugeordnet sind. Zeilen werden alphabetisch nach der Zeilentaste sortiert, wenn sie gespeichert werden. Aus diesem Grund ist das Design des Zeilenschlüssels sehr wichtig. Das Ziel ist es, Daten so zu speichern, dass die zugehörigen 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 sind alle Apache-Domänen in der Tabelle nahe beieinander, anstatt auf der Grundlage des ersten Buchstabens der Unterdomäne verteilt zu werden.
  • 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 die Werte im Speicher zwischengespeichert werden sollen, wie die Daten komprimiert oder die Zeilenschlüssel codiert werden. Jede Zeile in einer Tabelle hat die gleichen Spaltenfamilien, obwohl in einer bestimmten Zeile möglicherweise nichts in einer bestimmten Spaltenfamilie gespeichert ist.
  • Spaltenqualifikator

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

    • Eine Zelle ist eine Kombination aus Zeilen-, Spaltenfamilien- und Spaltenqualifikationsmerkmalen und enthält einen Wert und einen Zeitstempel, der die Version des Werts darstellt.
  • Zeitstempel

    • Neben jedem Wert wird ein Zeitstempel geschrieben, der den Bezeichner 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 read request flow

Was ist eine Metatabelle im obigen Bild?

meta table

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

  1. 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.
  2. Als nächstes durchsucht der Scanner den MemStore , den 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 zum Laden von HFiles . in den Speicher, der die Zielzeilenzellen enthalten kann.

quellen und weitere Informationen:

  1. HBase-Datenmodell
  2. HBase architecute
3
mrsrinivas

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.

1
Jiaji Li