1

この引用を明確にしたいだけです「コードは計算のためにデータの近くに移動します」、

  1. これは、開発者によって作成されたすべての Java MR がクラスター内のすべてのサーバーにデプロイされることを意味しますか?

  2. 1 が true の場合、誰かが MR プログラムを変更した場合、すべてのサーバーにどのように配布されますか?

ありがとう

4

2 に答える 2

3
  1. Hadoop は、MR ジョブの jar を HDFS (分散ファイル システム) に配置します。それを必要とするタスク トラッカーは、そこから取得します。したがって、いくつかのノードに配布され、実際にそれらを必要とするノードによってオンデマンドでロードされます。通常、これはノードがローカル データを処理することを意味します。
  2. Hadoop クラスタは、ジョブに関して「ステートレス」です。毎回新しいものとしてジョブが表示され、前のジョブの「副作用」は使用されません。

実際、いくつかの少数のファイル (または正確には分割) が大規模なクラスターで処理される場合、データが実際に存在する少数のホストのみに jar を送信することを最適化すると、ジョブの待ち時間が多少短縮される可能性があります。そのような最適化が計画されているかどうかはわかりません。

于 2012-07-22T18:51:07.127 に答える
2

Hadoop クラスターでは、データと計算に同じノードを使用します。つまり、hdfs データノードは、タスク トラッカーが計算に使用するのと同じクラスター上にセットアップされます。したがって、MR ジョブを実行すると、ジョブ トラッカーはデータが保存されている場所を確認します。一方、他の計算モデルではデータは同じクラスターに保存されず、一部の計算ノードで計算を行っている間にデータを移動する必要がある場合があります。

ジョブを開始すると、すべてのマップ関数が入力ファイルの分割を取得します。これらのマップ関数は、入力ファイルの分割がそれらに近づくように、つまり同じラック内にあるように実行されます。これは、計算がデータの近くで行われるという意味です。

質問を明確にするために、MR ジョブを実行するたびに、そのコードがすべてのノードにコピーされます。したがって、コードを変更すると、新しいコードがすべてのノードにコピーされます。

于 2012-07-24T16:59:24.220 に答える