1

分散キャッシュを介してすべてのマッパーで共有しようとしている 4 GB のファイルがあります。しかし、マップ タスクの試行の開始に大幅な遅延が見られます。具体的には、(job.waitForCompletion() を介して) ジョブを送信してから最初のマップが開始されるまでの間に大幅な遅延があります。

DistributedCache に大きなファイルがある場合の副作用について知りたいです。分散キャッシュ上のファイルは何回レプリケートされますか? クラスタ内のノード数はこれに影響しますか?

(私のクラスターには、各マシンが 10 近くのマップ スロットをホストできる非常に強力なマシンで実行されている約 13 のノードがあります。)

ありがとう

4

1 に答える 1

5

この場合の「キャッシュ」は少し誤解を招きます。4 GB のファイルは、jar と構成と共にすべてのタスクに配布されます。

200MB を超えるファイルの場合、通常、それらを直接ファイル システムに配置し、レプリケーションを通常のレプリケーションよりも高い値に設定します (この場合、これを 5 ~ 7 に設定します)。次のような通常の FS コマンドを使用して、すべてのタスクで分散ファイルシステムから直接読み取ることができます。

FileSystem fs = FileSystem.get(config);
fs.open(new Path("/path/to/the/larger/file"));

これにより、クラスター内のスペースが節約されますが、タスクの開始が遅れることもありません。ただし、非ローカル HDFS 読み取りの場合は、かなりの量の帯域幅を使用する可能性があるタスクにデータをストリーミングする必要があります。

于 2013-06-25T08:08:06.500 に答える