2014-01-21 6 views
8

Wenn HBase eine Datenbank ist, in der die Dateien in HDFS gespeichert sind, wie wird dann ein zufälliger Zugriff auf ein einzelnes Datenelement in HDFS ermöglicht? Mit welcher Methode wird dies erreicht?Wie aktiviert HBase den wahlfreien Zugriff auf HDFS?

Von the Apache HBase Reference Guide:

HBase intern Ihre Daten in indizierten "StoreFiles", die für High-Speed-Lookups auf HDFS existieren setzt. Weitere Informationen dazu, wie HBase seine Ziele erreicht, finden Sie in Kapitel 5, Datenmodell und im Rest dieses Kapitels.

Scannen beide Kapitel ergab keine High-Level-Antwort für diese Frage.

Wie also ermöglicht HBase den wahlfreien Zugriff auf in HDFS gespeicherte Dateien?

Antwort

11

HBase speichert Daten in HFiles, die nach ihrem Schlüssel indiziert (sortiert) sind. Bei einem zufälligen Schlüssel kann der Client feststellen, wann der Regionsserver nach der Zeile fragt. Der Regionsserver kann bestimmen, aus welcher Region die Zeile abgerufen werden soll, und dann eine binäre Suche durch die Region durchführen, um auf die richtige Zeile zuzugreifen. Dies wird durch ausreichende Statistiken erreicht, um die Anzahl der Blöcke, die Blockgröße, den Startschlüssel und den Endschlüssel zu kennen.

Zum Beispiel: Eine Tabelle kann 10 TB Daten enthalten. Aber der Tisch ist in Regionen der Größe 4GB aufgeteilt. Jede Region hat einen Start/Ende-Schlüssel. Der Client kann die Liste der Regionen für eine Tabelle abrufen und bestimmen, welche Region den gesuchten Schlüssel enthält. Regionen sind in Blöcke aufgeteilt, so dass der Regionsserver eine binäre Suche durch seine Blöcke durchführen kann. Blöcke sind im Wesentlichen lange Listen von Schlüssel, Attribut, Wert, Version. Wenn Sie wissen, was der Startschlüssel für jeden Block ist, können Sie eine Datei bestimmen, auf die zugegriffen werden soll und was der Byte-Offset (Block) mit dem Lesen beginnen soll, um zu sehen, wo Sie sich in der Binärsuche befinden.