同じ行の列ファミリーは、同じ RegionServer に属します。ここでの質問は、RegionServer が異なる列ファミリーを異なるマシンに格納するかどうかです。
2 に答える
必ずしもそうではありませんが、ある時点でそうなります。これは、基本的な HBase アーキテクチャの一部です。HBase テーブルを、行と列を含むスプレッドシートとしてイメージすると、リージョンは、一方向に複数の連続する行と、1 つ以上の列ファミリーのすべての列にまたがります。このようにして、シート全体が領域タイルで覆われます。
各リージョンは、1 つ以上 (通常は 3 つ) のクラスター ノードに格納されます。(特定のリージョンを含むすべてのノードを一度に失うと、そのリージョンのすべてのデータが失われます。レプリカを 1 つだけ失うと、HBase は残りのコピーから別のノードに複製されるようにします。)
現在、リージョンに含まれるデータが大きくなりすぎると、リージョンの分割が HBase によって自動的に開始され、それぞれがデータの半分を含む 2 つの新しいリージョンが作成されます。リージョンの分割 (リージョンのレプリケーション以外) によってのみ、データは最終的に HBase クラスターに分散されます。
1 つの行のデータを同じ列ファミリの異なる列に格納すると、データが 1 つの場所にまとめて格納されることが保証されます。
テーブル内のデータが十分に大きい場合、HBase はテーブルを異なるリージョンに分割します。HBase は列指向の DB であるため、さまざまな列ファミリーがさまざまなリージョンに格納されます。