hadoopのパフォーマンスチューニングを行っているときに、本当に奇妙なケースが発生しています。私は大きな中間出力(コンバーターなしのInvertedIndexやWordCountなど)で仕事をしていましたが、ネットワークと計算リソースはすべて均質です。 mapreduceの仕組みによると、WAVESのreduceタスクがある場合、マップとシャッフルのオーバーラップが少ないため、全体の実行時間は遅くなるはずですが、そうではありません。削減タスクの5つのWAVESを持つジョブは、1つのWAVEのみのタスクより約10%高速です。そして、ログをチェックしたところ、マップタスクの実行時間は、タスクが少なくなると長くなり、また、タスクが少ない場合には、フェーズ中の全体的な計算時間(シャッフルまたはマージではない)が長くなることが分かりました。私はマップとシャッフルの間に重複がないように低速スロースタートファクタを1に設定することで他の要因を除外しようとしましたが、重複がないように同時に実行される1つの縮小タスクに限定しましたスケジューラを変更してマッパーとレデューサーが別のマシンに配置されるようにして、I/O輻輳がないようにしました。上記のアプローチでも、同じことが起こります。 (マップメモリバッファを十分に大きく設定し、io.sort.factorを32以上、さらにio.sort.mbを320以上に設定します)タスクが少なくて済むと、Hadoopの縮小が遅くなる
私は実際には何も考えることができませんこの問題の原因となる他の理由は、どんな提案でも大歓迎です!
ただ混乱の場合には、私が経験しています問題は、次のとおりです。
0私は他のすべての同じ構成の下で同じジョブのタスクを減らす5対タスクを減らす1を実行しているのパフォーマンスを比較しています。削減計算のためのタスクトラッカーは1つだけです。私はすべての両方のケースでredcueタスクの一つだけtasktrackerを有することによって、順次実行されるタスク、およびmapred.tasktracker.reduce.tasks.maximum = 1を減少させるので、任意の存在しないであろうが余儀なくされてい
1時の並列処理は、私はすべてのマップが
3を実行される前に、その減速のどれもそれがデータをプルするために開始しませんmapred.reduce.slowstart.completed.maps = 1を設定している相
2を削減します1つのタスクを減らすことは、5つのタスクを減らすことよりも遅いことが判明しました!私は地図&シャッフル間の重複を許可するように設定mapred.reduce.slowstart.completed.maps = 0.05を設定しても
4、(従ってオーバーラップがよりあるべきであり、それが必要、タスクを一つだけ減らすことがある場合5削減タスクが順番に実行されているため)、5削減タスクはまだ1削減タスクよりも速く、1削減タスクのマップフェーズは遅くなります。
Chenyu
申し訳ありません申し訳ありませんが、私の説明には混乱があります。私は、削減するタスクトラッカーを1つしか使用せず、mapred.tasktracker.reduce.tasks.maximum = 1を設定して、同時に実行される2つの削減タスクがないので、タスクを減らすことの間に並列性がないことを強制しました。とにかくお返事ありがとうございます。 – cyw