さまざまなパラメーターを使用して HDFS に保存されたデータの読み取りと処理にかかる時間を (map-reduce によって) ベンチマークするために、いくつかの実験を実行しています。map-reduce ジョブを起動するために pig スクリプトを使用します。同じファイルのセットを頻繁に使用しているため、ファイル/ブロックのキャッシュが原因で結果が影響を受ける可能性があります。
map-reduce 環境で採用されているさまざまなキャッシング手法を理解したいと考えています。
HDFS に保存されたファイルfoo
(処理するデータを含む) が1
HDFS ブロックを占有し、 machine に保存されるとしますSTORE
。map-reduce タスク中に、マシンCOMPUTE
はネットワーク経由でそのブロックを読み取り、処理します。キャッシュは次の 2 つのレベルで発生します。
- マシン
STORE
のメモリにキャッシュ (メモリ内ファイル キャッシュ) - machine のメモリ/ディスクにキャッシュされます
COMPUTE
。
私は#1
キャッシングが起こると確信しています。次のようなことが起こるかどうかを確認したい#2
ですか?ここの投稿からCOMPUTE
、キャッシュがフラッシュされる前に同じマシンでキャッシュされたブロックが再び必要になる可能性は非常に低いため、クライアントレベルのキャッシュが行われていないようです。
また、Hadoop 分散キャッシュは、アプリケーション固有のファイル (タスク固有の入力データ ファイルではない) をすべてのタスク トラッカー ノードに配布するためだけに使用されますか? それとも、タスク固有の入力ファイル データ (foo
ファイル ブロックなど) が分散キャッシュにキャッシュされていますか? local.cache.size
関連するパラメーターは分散キャッシュのみを制御すると思います。
どうか明らかにしてください。