1

さまざまなパラメーターを使用して HDFS に保存されたデータの読み取りと処理にかかる時間を (map-reduce によって) ベンチマークするために、いくつかの実験を実行しています。map-reduce ジョブを起動するために pig スクリプトを使用します。同じファイルのセットを頻繁に使用しているため、ファイル/ブロックのキャッシュが原因で結果が影響を受ける可能性があります。

map-reduce 環境で採用されているさまざまなキャッシング手法を理解したいと考えています。

HDFS に保存されたファイルfoo(処理するデータを含む) が1HDFS ブロックを占有し、 machine に保存されるとしますSTORE。map-reduce タスク中に、マシンCOMPUTEはネットワーク経由でそのブロックを読み取り、処理します。キャッシュは次の 2 つのレベルで発生します。

  1. マシンSTOREのメモリにキャッシュ (メモリ内ファイル キャッシュ)
  2. machine のメモリ/ディスクにキャッシュされますCOMPUTE

私は#1キャッシングが起こると確信しています。次のようなことが起こるかどうかを確認したい#2ですか?ここの投稿からCOMPUTE、キャッシュがフラッシュされる前に同じマシンでキャッシュされたブロックが再び必要になる可能性は非常に低いため、クライアントレベルのキャッシュが行われていないようです。

また、Hadoop 分散キャッシュは、アプリケーション固有のファイル (タスク固有の入力データ ファイルではない) をすべてのタスク トラッカー ノードに配布するためだけに使用されますか? それとも、タスク固有の入力ファイル データ (fooファイル ブロックなど) が分散キャッシュにキャッシュされていますか? local.cache.size関連するパラメーターは分散キャッシュのみを制御すると思います。

どうか明らかにしてください。

4

1 に答える 1

3

HDFS 内で適用される唯一のキャッシュは、ディスク アクセスを最小限に抑えるための OS キャッシュです。そのため、データノードからブロックにアクセスする場合、他に何も行われていない場合はキャッシュされる可能性があります。

クライアント側では、これはブロックで何をするかによって異なります。ディスクに直接書き込む場合、クライアント OS がそれをキャッシュする可能性も非常に高くなります。

分散キャッシュは、ジョブがタスクを起動するクラスター全体に分散する必要がある jar とファイル専用です。この名前は、何も「キャッシュ」しないため、少し誤解を招きます。

于 2013-02-24T10:13:14.990 に答える