MapReduceジョブのコードを記述する際に、手動でレジューサーの数を設定すると、特定のレデューサーに送信されるデータが大きくなる可能性があります。そのような場合、減速タスクは複数のノードで同時に実行できますか?おそらく、鍵に対応するList<Value>
のデータを分割し、後で内部的にマージするか?還元剤は複数のノードを動的に使用できますか?
還元剤が使用するノードの数をオートスケールできない場合は、キーに対応する値の分布が不均一な場合、どのように処理しますか? default hadoop MapReduce partitionerは、ハッシュの値に基づいてパーティションを分割し、キーに対応するList<Value>
のサイズを考慮しません。
大丈夫ですが、2つのことがあります。 1.レデューサーに割り当てられるノードリソースのパーセンテージを定義することは可能ですか? 2.特定のケースで手動でレデューサーの数を設定する必要がある場合、特定のレデューサーの過負荷問題を軽減するために何ができるのですか? –
@DhruvMullick私は1についての答えがないのは恐れています.2に関しては、サンプリングをしたくない場合は、最も重い負荷がかかると思われるキーをレデューサーに割り当てるカスタムパーティショナーを手動で設定できます(つまり、他のキーは同じレデューサーに送られません)。たとえば、WordCountでは、最も頻繁な文字(例えば、文字 's')から始まるすべての単語を、自分自身の減速機および他のすべての単語にランダムに送ります。 – vefthym