2012-03-11 7 views
0

私はHadoop Map Reduceジョブを作成しました。私がローカルで実行すると、私は削減タスクを指定しなければ、出力ディレクトリに書き込まれた一時ファイルがあることに気付きました。レデューサーを指定すると、一時ファイルは書き込まれません。これは正常な動作ですか?私はそれ以外の場合は、マッパーがメモリ内のすべてを行い、メモリ内の減速機に転送しようとしていることを意味するテンポラリファイルが表示されることを期待します。これは私には信じられないほどの印象を与えます。還元剤指定時の中間出力

マッパーがどのように中間出力をファイルシステムに書き込むのかについての洞察は高く評価されます。

ありがとう

答えて

9

マップタスクはHDFSではなくローカルディスクに出力を書き込みます。マップ出力 は中間出力です。最終的な出力を生成するためにタスクを減らすことで処理され、ジョブが完了すると はマップ出力を破棄できます。複製するとHDFSに を格納することは過度になります。

しかし、減速機の数を0に設定すると、マップ出力は最終出力としてHDFSに保存されます。縮小フェーズがないので、マッパーの出力はジョブ全体の出力です。

さらに、hereは、レデューサーが指定されていても中間ファイルを調べる方法です。

+0

これは非常に意味があります。ありがとう! –

関連する問題