0

相互に独立した多数のWebサービスを取得するバッチジョブがあります。あるREST応答から取得されたデータは、すべての処理が完了したときに一部の軽量統計が計算されることを除いて、別の応答からのデータに依存したり、使用されたりすることはありません。

現在、ペイロードセットは11のセグメントに分散されており、各セグメントは個別のJavaスレッドで実行されます。最後のスレッドが完了すると、最終的な統計が計算されます。各RESTリクエストに、以前に取得したデータに関連する新しいデータがあるかどうかに応じて、バッチ全体に4〜25分かかる場合があります。

バッチサイズは比較的適度であり、データは1時間ごとにしか更新されないため、上記の時間枠は悪くありません。したがって、30分ごとにcronからジョブを実行すると、時系列をスキップする可能性が実質的になくなります。ただし、バッチサイズの拡大を検討しています。

私はHadoopを初めて使用し、このユースケースシナリオがMapReduce実装の良い例であるかどうか疑問に思いました。そして、一般的に、マルチスレッドアプリを使用する場合とHadoopにステップアップする場合をどのように決定しますか?

ありがとう

4

2 に答える 2

1

処理されるサイトのリストに分割されたWebクロールは、実際にはhadoopのケースであると言えます。そこでは、実際の MapReduce としてではなく、スケーラブルな分散スケジューラとして使用されます。
あなたが与える数字 (11 セグメント) は、境界ケースとして聞こえます。100 の答えを言う
なら、イエスは明らかです。同時に、各セグメントでのデータ処理に加えて、結果の意味のある集計があれば、Hadoop MapReduce を使用することは別のプラスになります。

于 2012-09-15T17:14:17.193 に答える
0

MapReduce は、集計関数 (sum、max、count など) を計算する特定のタスク用です。あなたの仕事はこのクラスに当てはまりますか? 次に、作業量がそれほど多くないため、MapReduce のメモリ内実装を調べます。Hadoop はすべてのデータをディスクに書き込みます。

于 2012-09-15T17:17:23.463 に答える