この引用を明確にしたいだけです「コードは計算のためにデータの近くに移動します」、
これは、開発者によって作成されたすべての Java MR がクラスター内のすべてのサーバーにデプロイされることを意味しますか?
1 が true の場合、誰かが MR プログラムを変更した場合、すべてのサーバーにどのように配布されますか?
ありがとう
実際、いくつかの少数のファイル (または正確には分割) が大規模なクラスターで処理される場合、データが実際に存在する少数のホストのみに jar を送信することを最適化すると、ジョブの待ち時間が多少短縮される可能性があります。そのような最適化が計画されているかどうかはわかりません。
Hadoop クラスターでは、データと計算に同じノードを使用します。つまり、hdfs データノードは、タスク トラッカーが計算に使用するのと同じクラスター上にセットアップされます。したがって、MR ジョブを実行すると、ジョブ トラッカーはデータが保存されている場所を確認します。一方、他の計算モデルではデータは同じクラスターに保存されず、一部の計算ノードで計算を行っている間にデータを移動する必要がある場合があります。
ジョブを開始すると、すべてのマップ関数が入力ファイルの分割を取得します。これらのマップ関数は、入力ファイルの分割がそれらに近づくように、つまり同じラック内にあるように実行されます。これは、計算がデータの近くで行われるという意味です。
質問を明確にするために、MR ジョブを実行するたびに、そのコードがすべてのノードにコピーされます。したがって、コードを変更すると、新しいコードがすべてのノードにコピーされます。