1

クエリの先頭に次を追加してみました:

set mapred.running.reduce.limit = 25;

 set hive.exec.reducers.max = 35;

最後の 1 つは、530 のレデューサーを 35 に減らしたジョブを投獄しました...これは、530 のレデューサーに相当する作業を 35 にしようとしていたと思います。

今与えている

set mapred.tasktracker.reduce.tasks.maximum = 3;

その数がノードあたりの最大値であるかどうかを確認してください (以前は、70 の潜在的なリデューサーを持つクラスターでは 7 でした)。

アップデート:

 set mapred.tasktracker.reduce.tasks.maximum = 3;

効果はありませんでしたが、試してみる価値はありました。

4

1 に答える 1

1

質問に対する正確な解決策ではありませんが、適切な妥協案になる可能性があります。

set hive.exec.reducers.max = 45;

400 以上のレデューサーを持つスーパー クエリ オブ ドゥームの場合、これにより、最もコストのかかるハイブ タスクが合計 35 のレデューサーに制限されます。現在、私のクラスターには 10 個のノードしかなく、各ノードは 7 個のレデューサーをサポートしています...そのため、実際には一度に実行できるのは 70 個のレデューサーのみです。ジョブを 70 未満に制限することで、最終製品に目に見える変更を加えることなく、速度がわずかに向上することに気付きました。これを本番環境でテストして、ここで何が起こっているのかを正確に把握します。当面は、これは良い妥協案です。

于 2011-02-09T15:40:33.460 に答える