4


HBaseを使用してログ(Webログデータ)を保存することを考えています。各ログには約20の異なる値(たとえば列)があり、それらの列に基づいて結果をフィルター処理するクエリを実行したいと思います。

私の最初のアイデアは、ログの各フィールドの値である各列の下に各ログ(セル)を複数回保存することでした。これにより、データサイズが約20倍になりますが、パフォーマンスが大幅に向上すると思います。行キーは、ソースIDであるプレフィックス付きのタイムスタンプになります。
各ソースは約40〜100Mのログ行を生成します(数万のソースが存在する可能性があります)。
また、おそらく10秒未満の低遅延が必要です(したがって、Hiveのようなソリューションは現在オプションではありません)

これは正しいスキーマ設計だと思いますか?そうでなければ、あなたにとって正しいものだと思いますか、それとも私は何か他のものを使うべきですか(何)?
すべての回答をありがとう。

4

1 に答える 1

4

私たちはウェブログと同じようなことをしています。私たちはあなたが提示した場合よりも少し複雑なことをしていますが、遭遇する可能性のある問題に類似点が見られます。

収集しているさまざまなデータを格納するためにハイブにテーブルを作成し、クエリを実行してそのデータを事前に集計されたHBaseのテーブルにロードするジョブがあります。

これにより、生データが1回だけ保存され、必要な集計が保存されるため、データの増加と重複のレベルを減らすことができます。Hiveを使用して生データを保存すると、さまざまなディメンションやデータのさまざまな操作によって集約する柔軟性が大幅に向上します。

特定の目標によっては、HBaseがストレージの唯一の要件になる場合がありますが、目標がデータの集約と分析である場合は、HiveとHBaseの連携が優れていると思います。

結果が「リアルタイム」で必要ない場合は、ハイブを使用して生データを保存し、クエリからレポートを生成することも許容できる解決策になる可能性があります。

私は決して、HStackのセットアップに関する決定的なリソースではありません。私は、既存のシステムの設計の主要メンバーでさえありませんでした。hbaseの最適なセットアップ/編成を維持しながら、hbaseにデータを保存して取得できない状況に遭遇しました。データを取得するためにデータを保存する必要がある方法では、他の領域で多くの頭痛の種が発生します。

私のとりとめのないものが何らかの形で助けを提供してくれたことを願っています。:)

于 2011-04-20T17:16:46.940 に答える