将小文件合并为Hadoop分布式缓存的大文件?

时间:2013-04-06 18:14:54

标签: hadoop hdfs

我需要分发很多小文件(大小约1MB)。众所周知,Hadoop和HDFS更喜欢大文件。但我不知道这是否也可以应用于分布式缓存,因为分布式文件存储在本地计算机上。

如果需要合并,在HDFS上以编程方式合并文件的最佳方法是什么?

还有一个问题:使用符号链接有什么好处?感谢

2 个答案:

答案 0 :(得分:2)

您可以创建所有小文件的存档(tar或zip),并将其添加到分布式缓存中,如下所示:

DistributedCache.addCacheArchive(new URI("/myapp/myzip.zip", job);

按照以下方式获取mapper / reducer中的文件:

public void configure(JobConf job) {
         // Get the cached archives/files
         File f = new File("./myzip.zip/some/file/in/zip.txt");
       }

了解更多here

答案 1 :(得分:2)

这是关于小文件问题的来自Cloudera的blog