0

最近、Hbase と Hadoop スタックの実験を始めました。アプリケーションをゼロから構築しようとしています。Google n-gram データセットを使用するアプリケーションのスキーマを設計しています。

データセットは、行キーとして ngram を持ち、多くの修飾子 (Year、page count、match_count) を持つ 1 つの列ファミリーを持つモデルにするか、モデルは行キーとして n-gram と複数の列ファミリーを持つことができることを認識しています年、page_count、match_count。

モデルは、このデータの使用方法に依存することを理解していますが、これらのアプローチの両方の長所と短所を理解したいと思います。

乾杯、ドワラック

4

1 に答える 1

0

Hbaseの本からこの章を読むことを検討してください:6.2。列ファミリーの数について

「現在、HBaseは2つまたは3つを超える列ファミリーではうまく機能しないため、スキーマ内の列ファミリーの数を少なくしてください。現在、フラッシングと圧縮はリージョンごとに行われるため、1つの列ファミリーがフラッシュをもたらすデータの場合、隣接するファミリーもフラッシュされますが、それらが保持するデータの量は少なくなります。多くの列ファミリーの場合、フラッシュと圧縮の相互作用により、大量の不必要なI / Oロードが発生する可能性があります(フラッシュと列ごとのファミリベースで機能する圧縮)。」

「スキーマで可能な場合は、1つの列ファミリーでうまくいくようにしてください。データアクセスが通常列スコープである場合にのみ、2番目と3番目の列ファミリーを導入します。つまり、一方の列ファミリーのいずれかをクエリしますが、通常は両方ではありません。一度"

ここで、物理的には、すべての列ファミリーメンバーがファイルシステムに一緒に保存されることに注意してください。チューニングとストレージの仕様はカラムファミリーレベルで行われるため、すべてのカラムファミリーメンバーが同じ一般的なアクセスパターンとサイズ特性を持っていることをお勧めします。すべてのデータが同時にプロセスになる場合は、1つの列ファミリーのみを持つテーブルを検討することをお勧めします。ほとんどの場合、別々に使用されない限り、複数のファミリを使用しない方がよいでしょう。

于 2012-08-11T16:01:15.597 に答える