1

ファイルのブロック全体が 1 台のマシンにあり、デフォルトのレプリケーション ファクターが 1 である状況があります。

このシナリオでは、クラスターで Hadoop を開始すると、ブロックがそのマシンにのみ存在するため、すべてのマッピング タスクが 1 つのマシンでのみ実行されるように感じます。そうですか?ローカル マッパー タスクの実行は制約ですか、それとも単なる優先事項ですか?
はいの場合、ブロックをローカル ディスクにコピーすることにより、マッパー タスクが他のマシンでも実行されるように構成することは可能ですか?

2 番目の質問は、マッパー タスクが 1 台のマシンでのみ実行されている場合でも、マッパーの中間データをコピーすることによって他のすべてのマシンでレデューサーが開始されるというのは正しいですか?

4

2 に答える 2

2

データのローカル実行は優先事項であり、制約ではありません。他のノードに空きスロットがある場合、Hadoop は非ローカル マッパーを生成します。同時に実行されている同じデータ ブロックに対してさらに多くのマッパーを起動することもできます(これは投機的実行と呼ばれます)。最初に終了したタスクが勝ち、他のタスクは強制終了されます。

レデューサーについては、シャッフルと呼ばれるフェーズでネットワーク経由でマップ出力データをコピーします。

于 2013-09-25T17:42:49.247 に答える
1

フレームワークは、処理をできるだけローカルに保つために最善を尽くします。しかし、これに従わない場合もあります。1つは明らかにスロットが利用できないことです。もう 1 つのケースは、InputSplit が複数のブロックにまたがり、各ブロックが異なるマシンに存在する場合です。このような場合、InputSplit の他の部分は、この InputSplit の Mapper が開始されたノードに移動され、ブロック全体が 1 つの Mapper によって処理されるようになります。

ローカル マッパー タスクの実行は制約ですか、それとも単なる優先事項ですか?

それは制約ではありません。物事をより効率的にするだけです。そうしないと、BigData を処理するためにここから別の場所に移動するのはどれほど非効率的でしょうか。これは、Hadoop の基本原則の 1 つです。

はいの場合、ブロックをローカル ディスクにコピーすることにより、マッパー タスクが他のマシンでも実行されるように構成することは可能ですか?

どうしてそうするか?同じブロックの複数のレプリカでマッパーを本当に実行したい場合は、ブロックをある場所から別の場所にコピーする代わりに、投機的実行を true に切り替えることができます。これにより、複数のマシンの同じブロックで複数のマッパーが実行され、最速のマッパーから出力が得られます。

2 番目の質問は、マッパー タスクが 1 台のマシンでのみ実行されている場合でも、マッパーの中間データをコピーすることによって他のすべてのマシンでレデューサーが開始されるというのは正しいですか?

レデューサーは、空きスロットがある任意のノードで開始できます。ただし、必ずしもすべてのマシンではありません。

于 2013-09-25T18:20:32.930 に答える