3

CDH3 から CDH4 への移行を計画しています。この移行の一環として、データの更新も行うため、HBASE を外部システムに導入することも計画しています。CDH3 では、Hive をウェアハウスとして使用しています。

ここで移行の大きな問題が発生します。Hive はテーブルへのパーティションをサポートしています。また、システムにはさまざまなスキーマの多くのテーブルがあり、一部のテーブルには日付に基づくパーティションがあり、過去 5 年間のデータの履歴があります (一部のテーブルには 365 * 5 パーティションが存在します)。

HBase でも同じ動作を実現したいと考えています。参照したところ、HBase でパーティションを作成するためのソリューションが見つかりませんでした。HBase でこのパーティションごとのテーブル作成を実装するのを手伝ってくれる人はいますか?

HBASE を使用する理由は、更新をサポートしているためです。

HBASE がこれをサポートしていない場合は、他の (MangoDB、Cassandra など) が私たちの動作をサポートしています。

解決策を回避するための少なくともいくつかの回避策を見つけることができれば、それは本当に大きな助けになります.

4

2 に答える 2

3

HBase にはリージョンと呼ばれるパーティションに近い概念があります。ただし、HBase のこれらのパーティションは、Hive (または RDBMS) パーティションのようには機能しません。各リージョンはキーの範囲を保持しますが、キー範囲を分割または分割することにより、キー範囲をより小さなリージョンに分割できます。たとえば、元のリージョンがキー 0 ~ 9 を保持している場合、0 ~ 4 と 5 ~ 9 または 10 の 2 つの小さなリージョンに分割できます。パーティション 0、1、2... など

日付がその最初の部分であり、その後に今日のキーが続くようにキーが複合される場合は、毎日が1つ以上の地域を取得するように、ベースを事前に分割できます。

ただし、最上位バイトが連続しているキーは書き込みを遅くすることに注意する必要があります (1 回限りの読み込みを行う場合は問題にならない可能性があります)。これは「ホット スポット」と呼ばれる問題です。それについて読むことができます。sematext の Alex Baranau によるブログ投稿で、それを克服するサンプル アプローチ

于 2013-09-26T06:14:58.950 に答える
0

残念ながら、Hive のように HBase でデータを分割することはできません。これらのツールは両方とも、設計と動作の両方で互いにかなり異なります。HBase はキー空間をパーティション分割し、各パーティションはテーブルと呼ばれるものであるため、HBase のデータは既にパーティション分割されています。さらに細かいパーティション分割が必要な場合は、列ファミリーを賢く使用することでそれを実現できます。

たとえば、年ごとに列ファミリーを持つことができます。したがって、5 つの列ファミリーを持つテーブルが作成されます。


編集 :

最後のコメントで述べたようなものが必要な場合は、事前に分割されたテーブルを作成できます。都合に応じて、リージョンの開始行キーと終了行キーを選択できます。同様に、その日の最初と最後のエントリがそれぞれその特定の地域の開始行と終了境界になる、各日に 1 つのパーティション。

于 2013-09-25T09:58:55.157 に答える