さまざまなグループのマッパーと減量を実行しています
-
21-12-2019 - |
質問
マッパーVSコレクターVS Recucer vs Collector VS Collector VS Deluctorのハードウェアに激しく異なる制約を持つ、素晴らしい、大きく複雑なElastic-MapReduceジョブを持っています。
問題は次のとおりです。マッパーの場合、いくつかのマッパーを並行して実行するためのトンの軽量マシンが必要です(あそこ)。コレクターはより多くのメモリが空いているが、それぞれ6GBのピークヒープを与えるのはまだ問題ないはずです。 。 。しかし、問題は減速機です。それらのキックオフの1つで、それは処理のために約32-64GBを獲得します。
ボックスのフルメモリが消費されるため、ラウンドロビンタイプのタスクデスを受けること、それは他の場所に1つのマッパーと減速機を再起動します。
最も簡単なアプローチは、小さいボックス上で実行されているマッパー/コレクターを走らせながら、縮小者を別の「グループ」(一握りの景色ボックスの根元のボックス)で実行する方法を指定することができればなるでしょう。また、ノードマッパーが縮小業者の要求に慣れているノードマッパーを管理している必要があるため、これも大幅なコスト削減につながる可能性があります。
代替案は、マッパーコレクターの出力を処理するためにスパンアップすることができる2番目のクラスターがあるように、ジョブを「解散」することです - しかしそれは明らかに「サブ最適」です。
だから、質問は次のとおりです。
- 「グループ」をマッパーまたは減速機にする方法を指定する方法がありますか 伸縮性のあるMapReduceおよび/またはHadoop?
- すべてのマッパーが完了するまで減速機が始動するのを防ぐ方法はありますか?
- 誰もがこれをどのように近づくかについて他のアイデアを持っていますか?
歓声!
解決
Hadoop MapReduceジョブ中に、すべてのマッパーが完了した後に稼働し始めます。マップフェーズからの出力はシャッフルされて分割される前に分割が起こる前にどのデパータを受信するかを決定するために起こる前にソートされます。そのため、シャッフル/ソートフェーズが終了した後(マッパーが完了した後)の後に稼働し始めます。