2012-03-01 7 views
0

私は階層的なディレクトリを持っています、各ディレクトリには多くのファイルがあり、各テキストファイルには多くのURL文字列があります.HadoopのすべてのファイルのすべてのURLをダウンロードしてバランスを取っていきたいです。Hadoopバランスを改善するために入力セットを分割する方法は?

たとえば、1 + 5ノードのHadoopクラスタと5つのURLs.Soがある場合は、5-in-oneファイルまたは1-per-file(次に5つのファイル)を入力としてより良いバランスを得る?

私は、Hadoopはデフォルトで64Mブロックを入力して1つのノードだけを実行し、5つのすべてのスレーブを実行することはできないと考えます。

ありがとうございます!

答えて

3

各URLで非常に計算量の多いものを実行しておらず、ファイルが多くて< 64 MBの場合は、1つのノードで1つのマッパーを実行する方がよいでしょう。その場合、私はすべてのURLを1つのファイルアプローチで扱います。

各マッパーには十分な作業ができるように、より大きなファイルを持つ方がよいです。ファイルが非常に小さい場合は、それらをマージして合計を64 MBに近づけます。これにより、より多くのデータをHDFSに保存することができます。これは、各ファイルがメタデータを保持するためにネームノードのRAMを占有し、RAMが限られているためです。ファイル数を減らした場合、より少ないRAMを使用します。

CombineFileInputFormatアプローチを試すこともできます。

関連する問題