3

Hadoop を学習することを考えていますが、問題が解決するかどうかはわかりません。基本的に、キューと多数のワーカーを含むジョブがあります。各ワーカーは少量の作業を行い、結果を保存するか (成功した場合)、さらに処理するためにキューに送り返します。私の問題はスケーラブルであり、ネットワーク (ec2) の帯域幅によって制限されており、複数の CPU によるデータのクランチに追いつくことはできません。Hadoop クラスター内の Java でジョブを実行し、Hadoop でキューを介して作業を分散させることができるのではないかと考えました。これはより良いアプローチでしょうか?Hadoop をキューに入れ、可能な限りローカルでジョブを実行して、帯域幅の使用を最小限に抑え、CPU の使用を最大化できると仮定するのは正しいですか? 私のプログラムは非常に CPU バウンドですが、そのパフォーマンスに関する最近の問題のほとんどは、ネットワーク経由で作業を渡すことに関連しています (作業をできるだけローカルに保ちたい)。しかし、私が見た Hadoop チュートリアルと私の問題の違いは、チュートリアルでは、私のプログラムが常に新しい作業を生成している間 (最終的に完了するまで)、すべての作業が事前にわかっています。これは機能し、ネットワーク経由でメッセージを渡すことの影響を軽減するのに役立ちますか? しかし、私が見る Hadoop チュートリアルと私の問題との違いは、チュートリアルでは、プログラムが自分自身のために常に新しい作業を生成している間 (最終的に完了するまで)、すべての作業が事前にわかっていることです。これは機能し、ネットワーク経由でメッセージを渡すことの影響を軽減するのに役立ちますか? しかし、私が見る Hadoop チュートリアルと私の問題との違いは、チュートリアルでは、プログラムが自分自身のために常に新しい作業を生成している間 (最終的に完了するまで)、すべての作業が事前にわかっていることです。これは機能し、ネットワーク経由でメッセージを渡すことの影響を軽減するのに役立ちますか?

申し訳ありませんが、私は Hadoop を初めて使用し、問題を解決できるかどうか知りたいと思っていました。

4

1 に答える 1

1

Hadoop とは、大規模なデータ セットに対してバッチのようなモードでジョブを実行することです。ある種のキューのような動作をさせるのは難しいですが、不可能ではありません。必要に応じてキューを構築するための同期を提供する Apache ZooKeeper があります。

解決しようとしているように見える問題を解決するためのツールはたくさんあります。RabbitMQをご覧になることをお勧めします。Python を使用している場合、Celeryは非常に優れています。

于 2012-04-30T13:15:52.700 に答える