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?
Aus dem Apache HBase Referenzhandbuch :
HBase speichert Ihre Daten intern in indizierten "StoreFiles", die auf HDFS für High-Speed-Lookups existieren. Weitere Informationen dazu, wie HBase seine Ziele erreicht, finden Sie in Kapitel 5, Datenmodell und im Rest dieses Kapitels.
Beim Scannen beider Kapitel wurde keine Antwort auf hoher Ebene für diese Frage angezeigt.
Wie ermöglicht HBase den wahlfreien Zugriff auf in HDFS gespeicherte Dateien?
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 ausfü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.