1

私はmapred.reduce.tasks = 100(実験しているだけで)Hadoopジョブを実行しています。生成されるマップの数は、入力分割に依存するため、537です。問題は、並行して「実行中」のレデューサーの数が4を超えないことです。マップが100%完成した後でも。CPU使用率が最適ではなく、Reduceが非常に遅いため、実行中のレデューサーの数を増やす方法はありますか?

私も設定しmapred.tasktracker.reduce.tasks.maximum = 100ました。しかし、これは並行して実行されているレデューサーの数には影響しないようです。

4

3 に答える 3

2

パーティショナーが使用するハッシュコードを確認してください。キーが4つのハッシュコード値のみを返す場合、Hadoopは4つのレデューサーのみをスケジュールします。

より多くのレデューサーを取得するには、独自のパーティショナーを実装する必要がある場合がありますが、マッパーが4つのキーしか生成しない場合は、レデューサーの最大数は4です。

于 2012-11-06T16:26:04.833 に答える
0

以下のようなジョブ構成を使用して、レデューサーの数を指定できます。

job.setNumReduceTasks(6);

また、jarを実行しているときに、次のようにプロパティを渡すことができます。

-D mapred.reduce.tasks = 6

于 2012-11-06T11:57:36.050 に答える
0

mapred-site.xmlを変更した後、必要なのはmapredデーモンとdfsデーモンの再起動だけでした。mapred.tasktracker.reduce.tasks.maximum確かに、Reduce容量を増やすために設定する正しいパラメーターです。

mapred-siteジョブが送信されるたびにhadoopがリロードしないことを選択した理由を理解できません。

于 2012-11-07T04:59:46.050 に答える