2

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

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

还有一个问题:使用 symlink 有什么好处?谢谢

4

2 回答 2

2

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

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

并在您的映射器/减速器中获取文件,如下所示:

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

在这里阅读更多

于 2013-04-06T18:32:54.100 回答
2

这是 Cloudera 关于小文件问题的博客

于 2013-04-08T13:51:30.850 回答