3

ユーザーが 4 つのソーシャル ネットワークからの情報を表示できるように、EC2 インスタンスに Web サイトをセットアップしました。

ユーザーが参加すると、サイトは毎晩情報を更新し、翌日に最新の関連情報を表示する必要があります.

最初に、各ユーザーを通過し、必要な API 呼び出しを実行してから、データを DB (Amazon rds インスタンス) に保存する cron ジョブがありました。

この操作は 1 人あたり 2 ~ 30 秒かかります。つまり、1 つずつ行うと、更新に数日かかることになります。

私はMapReduceを見ていましたが、それが私がやろうとしていることにとって適切なオプションであるかどうかを知りたいのですが、現時点では確信が持てません.

更新したいすべてのレコードと、MapReduce に各レコードの処理方法を指示し、それらすべてを同時に処理させるスクリプトを含む .sql ファイルを MapReduce に渡すことはできますか?

そうでない場合、それを行うための最良の方法は何でしょうか?

事前にご協力いただきありがとうございます。

4

2 に答える 2

4

私は、各ユーザーのデータが他のユーザーのデータから独立していると仮定していますが、これは論理的に思えます。そうでない場合は、この回答を無視してください。

相互に独立したデータがある (つまり、各ユーザーのデータは他のユーザーのデータから独立している) ため、MapReduce を使用する必要はありません。MR は、データが独立していない場合のデータ操作を簡素化するプログラミングの単なるパラダイムです(map がデータを準備し、次に並べ替えフェーズがあり、reduce が並べ替えられたレコードから結果を引き出します)。

あなたの場合、より多くのコンピューターを使用したい場合は、負荷をそれらの間で分割するだけです. 次に、ユーザーを事前にコンピューター間で分散するか、または 1000 人程度のユーザーのチャンクで要求することができます。これにより、より早く終了するマシンがより多くのユーザーを処理できるようになります。

ただし、MR フレームワーク ( Hadoopなど) を使用すると、1 つのフェーズ (マップのみ) しか使用しない場合でも、追加のボーナスがあります。エラー処理 (ノードの失敗、ジョブの失敗など) を行い、ノード間での入力の分散を処理します。

MR をセットアップするのに苦労する価値があるかどうかは、以前の経験 (YMMV) に依存します。

于 2011-05-30T10:16:07.723 に答える
1

私の理解が正しければ。このアプリケーションを MapReduce として実装する必要がある場合、すべての処理は Map フェーズで実行され、reduce は Map フェーズの結果を単純に出力する可能性があります。したがって、これを実装する場合は、ジョブを複数の EC2 インスタンスに分割し、各インスタンスが SQL データ内の特定の範囲のレコードを処理するようにします。これは、データを異なるインスタンスに分割する方法をよく理解していることを前提としています。利点は、Elastic MapReduce の料金を支払う必要がなく、可能性のある MapReduce オーバーヘッドを回避できることです。

于 2011-05-24T13:39:08.067 に答える