5

まず、Hive と Hadoop (および一般的なビッグ データ) について学んでいることを明確にしたかったので、適切な語彙が不足していることをお許しください。

私は大規模な (少なくとも私にとっては) プロジェクトに着手しています。このプロジェクトでは、これまで主に MySQL を使用していたため、これまで使用していなかった膨大な量のデータを処理する必要があります。

このプロジェクトでは、一連のセンサーが 1 時間に 5 回 (1 日 15.000.000.000) 約 125.000.000 のデータ ポイントを生成します。

Hadoop MapReduce と Hive を使用してデータのクエリと分析を行う方法があることは理解しています。

私が直面している問題は、Hive がほとんど「cron ジョブ」のように実行され、何時間もかかり、別のインフラストラクチャを必要とする可能性があるリアルタイム クエリでは実行されないことを理解できたことです。

リアルタイムでクエリする必要があるデータはせいぜい約 1.000.000.000 行になるため、Hive クエリの結果に基づいて MySQL テーブルを作成することを考えましたが、これが正しい方法なのか、そうすべきなのか疑問に思っていました。他の技術を調べてください。

ビッグ データのリアルタイム クエリ用に特別に作成された、研究すべきテクノロジはありますか?

どんなヒントでも大歓迎です!

4

1 に答える 1

7

これは複雑な質問です。質問で言及したテクノロジーに対処することから始めて、そこから始めましょう。

  1. MySQL: MySQL (またはその他のリレーショナル DB) を使用したことのある人なら誰でも、MySQL の従来のすぐに使用できるインストールでは、あなたが話しているボリュームをサポートしないことは明らかです。エンベロープの計算の裏側から、センサー インサートが 100 バイトしかないと仮定すると、約 150 億 x 100 バイト = 1.5 兆バイトまたは 1 日あたり 1.396 テラバイトになることがわかります。特に、1 日か 2 日以上保存することを計画している場合は、まさにビッグ データです。

  2. Hive: Hive は確かにその種のデータ ボリュームを処理できます (私と他の多くの人がそれを実行しました) が、ご指摘のとおり、リアルタイムのクエリは得られません。すべてのクエリはバッチで実行され、高速なクエリが必要な場合は、データを事前に集計する必要があります。

ここで、実際の質問に移ります。実行する必要があるクエリの種類は何ですか? 任意のリアルタイム クエリを実行する必要があり、それらのクエリが何であるかを予測できない場合は、Vertica、Greenplum、Microsoft PDW などの比較的高価な独自のデータ ストアに目を向ける必要があります。これらには多くの費用がかかります。お金ですが、彼らと他の人はあなたが話している負荷を処理できます。

一方、実行されるクエリのタイプをある程度正確に予測できる場合は、Hive のようなものが理にかなっています。生データをそこに保存し、バッチ クエリ機能を使用して手間のかかる作業を行い、MySQL または別のリレーショナル データベースに集計データ テーブルを定期的に作成して、低レイテンシ クエリのニーズをサポートします。

もう 1 つの代替手段は、HBase のようなものです。HBase は分散データへのアクセスを低レイテンシーで提供しますが、クエリ言語 (HBase には SQL がありません) とデータを集計する機能という、おそらく慣れ親しんでいる 2 つの重要な項目が失われます。HBase で集計を行うには、MapReduce ジョブを実行する必要がありますが、そのジョブは結果を HBase に戻して格納し、再び低レイテンシ アクセスを実現できます。

于 2012-10-03T01:25:04.763 に答える