配布する必要がある小さなファイル (サイズ ~ 1MB) がたくさんあります。Hadoop と HDFS は大きなファイルを好むことが知られています。しかし、分散ファイルはローカル マシンに保存されるため、これが分散キャッシュにも適用できるかどうかはわかりません。
それらをマージする必要がある場合、HDFS でプログラムによってファイルをマージする最良の方法は何ですか?
もう 1 つの質問: symlink を使用する利点は何ですか? ありがとう
これは、小さなファイルの問題に関する Clouderaのブログです。
You can create an archive (tar or zip) of all your small files and add it to the distributed cache as follows:
DistributedCache.addCacheArchive(new URI("/myapp/myzip.zip", job);
And get the files in your mapper/reducer as follows:
public void configure(JobConf job) {
// Get the cached archives/files
File f = new File("./myzip.zip/some/file/in/zip.txt");
}
Read more here