0

MySQLデータベースをデータストアとして使用する製品があります。データストアは大量のデータを保持します。私たちが直面している問題は、アプリケーションの応答時間が非常に遅いことです。データベースクエリは非常に基本的であり、結合がある場合は非常に単純です。一部の上級従業員によると、応答時間が遅い根本的な原因は、巨大なデータストアでのデータベース操作です。

当社の別のチームは、過去にHadoopを使用して大きな固定形式のファイルを処理し、これらのファイルの内容をデータベーステーブルにダンプするプロジェクトに取り組んでいました。このプロジェクトから借りて、一部のチームメンバーは、MySQLデータベースの使用から、代わりにデータを保持する単純な固定形式のファイルに移行できると感じています。代わりに、データベース内の各テーブルに対応する1つのファイルがあります。次に、これらのファイルのコンテンツに対してDML操作を実行するためのインターフェイスを提供する別のデータインタラクションレイヤーを構築できます。このレイヤーは、HadoopとMapReduceプログラミングモデルを使用して開発されます。

この時点で、いくつかの質問が頭に浮かびます。1.問題ステートメントは、Hadoopを使用して解決される種類の問題に適合しますか?2.アプリケーションは、必要なデータをフェッチ/更新/削除するようにデータインタラクションレイヤーにどのように要求しますか?私の理解では、データを含むファイルはHDFSにあります。必要なファイル(データベース内のテーブルと同様)を処理し、必要なデータをフェッチするHadoopジョブを生成します。このデータは、HDFSのoutoutファイルに書き込まれます。必要なコンテンツを取得するには、このファイルを解析する必要があります。3.固定フォーマットファイルを使用してHadoopで処理するというアプローチは、本当に問題を解決しますか?

2台のUbuntuマシンで単純なノードクラスターをセットアップすることができましたが、Hadoopをしばらく試してみたところ、問題の説明はHadoopに適していないように感じました。私は完全に間違っている可能性があるため、Hadoopがこのシナリオに当てはまるのか、それとも問題の説明がHadoopの目的と一致していないため、時間の無駄なのかを知りたいのですが。

4

2 に答える 2

1

Hive (http://hive.apache.org/) に直接アクセスすることをお勧めします。Hadoop MR の上に構築された SQL エンジン/データ ウェアハウスです。一言で言えば、Hadoop のスケーラビリティと Hadoop の高レイテンシが得られます。
そこに大量のデータを保存し、必要なすべての変換を行い、要約されたデータのみを MySQL に移動してクエリを提供することを検討します。通常、ユーザー要求をハイブ クエリに変換することはお勧めできません。処理が遅すぎるため、ジョブを並行して実行する機能は簡単ではありません。

于 2012-07-24T11:03:49.307 に答える
0

より頻繁にデータを更新することを計画している場合、hadoop に直接保存することは適切なオプションではない可能性があります。Hadoop でファイルを更新するには、ファイルを書き換えてから古いファイルを削除し、hdfs に新しいファイルをコピーする必要がある場合があります。

ただし、データを検索して結合するだけの場合は、適切なオプションです。ハイブを使用すると、SQL などのクエリを作成できます。

Hadoop では、ワークフローは次のようになります。

  1. クエリに対して Hadoop ジョブを実行します。

  2. Hadoop プログラムはクエリを解析し、いくつかのジョブを実行して、クエリと入力パラメーターに基づいてファイルを結合および読み取ります。

  3. 出力は hdfs で生成されます。

  4. 出力をローカル ファイル システムにコピーします。次に、出力をプログラムに表示します。

于 2012-07-24T15:55:00.513 に答える