Gruppe von In HBase

8

Ich weiß fast nichts über HBase. Entschuldigung für grundlegende Fragen.

Stellen Sie sich vor, ich habe eine Tabelle von 100 Milliarden Zeilen mit 10 int, einer datetime und einer string Spalte.

  1. Erlaubt HBase das Abfragen dieser Tabelle und das Gruppieren des Ergebnisses basierend auf dem Schlüssel (sogar einem zusammengesetzten Schlüssel)?
  2. Wenn ja, muss ein map / reduce-Job ausgeführt werden?
  3. Wie füttern Sie es die Abfrage?
  4. Kann HBase im Allgemeinen in Echtzeit Abfragen in einer Tabelle ausführen?
iCode 03.02.2012, 09:36
quelle

3 Antworten

13

Die Datenaggregation in HBase überschneidet sich mit dem Bedarf an "Echtzeitanalysen". Während HBase nicht für diese Art von Funktionalität gebaut wird, gibt es eine Menge Bedarf dafür. Die Anzahl der Möglichkeiten dafür wird entwickelt.
1): HBase-Tabelle als externe Tabelle in Hive registrieren und Aggregationen durchführen. Die Daten werden über HBase API zugegriffen, was nicht so effizient ist. Konfigurieren von Hive mit Hbase Dies ist eine Diskussion darüber, wie es gemacht werden kann. Es ist der leistungsfähigste Weg, HBase-Daten zu gruppieren. Es bedeutet, dass MR-Jobs ausgeführt werden, aber von HHive, nicht von HBase.
2) Sie können einen eigenen MR-Job schreiben, der mit HBase-Daten arbeitet, die in HFiles im HDFS sitzen. Es wird der effizienteste Weg sein, aber nicht einfach und Daten, die Sie verarbeitet haben, wären etwas abgestanden. Dies ist am effizientesten, da Daten nicht über die HBase-API übertragen werden, sondern direkt von HDFS sequenziell zugegriffen wird.
3) Die nächste Version von HBase wird Koprozessoren enthalten, die Aggregationen in bestimmten Regionen ermöglichen können. Sie können davon ausgehen, dass es sich um eine Art gespeicherter Prozeduren im RDBMS-Wort handelt.
4) Im Speicher ist auch ein Inter-Region-MR-Job, der in einem Knotenparallelisiert wird, in den zukünftigen HBase-Versionen geplant. Es wird etwas fortgeschrittenere analytische Verarbeitung als Koprozessoren ermöglichen.

    
David Gruzman 03.02.2012, 16:20
quelle
5

FAST RANDOM READS = VORBEREITETE Daten in HBase! Verwenden Sie Hbase für das, was es ist ...

1. Ein Platz zum Speichern vieler Daten.
2. Ein Ort, an dem Sie superschnelle Lesevorgänge ausführen können.
3. Ein Ort, an dem dir SQL nichts nützt (benutze Java).

Obwohl Sie Daten aus HBase lesen und alle Arten von Aggregaten direkt in Java-Datenstrukturen ausführen können, bevor Sie das aggregierte Ergebnis zurückgeben, ist es am besten, die Berechnung mapreduce zu lassen. Aus Ihren Fragen scheint es, als wollten Sie, dass die Quelldaten für die Berechnung in HBase gespeichert werden. Wenn dies der Fall ist, ist die Route, die Sie nehmen möchten, HBase als Quelldaten für einen mapreduce-Job. Führen Sie Berechnungen dafür durch und geben Sie die aggregierten Daten zurück. Aber warum sollten Sie dann von Hbase lesen, um einen MapReduce-Job zu führen? Belassen Sie die Daten nur in HDFS / Hive-Tabellen und führen Sie mapreduce-Jobs auf ihnen aus. THEN laden Sie die Daten in "vorbereitete" Hbase-Tabellen, damit Sie superschnelle zufällige Lesevorgänge ausführen können.

    
Horse Voice 16.06.2012 18:57
quelle
1

Sobald Sie die voraggregierten Daten in HBase gespeichert haben, können Sie Crux Ссылка verwenden, um Ihre HBase-Daten weiter zu analysieren. Crux unterstützt zusammengesetzte und einfache Schlüssel mit erweiterten Filtern und Gruppieren nach.

    
Sonal Goyal 21.10.2012 14:31
quelle

Tags und Links