将小文件合并成大文件以用于hadoop分布式缓存?

kupeojn6  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(330)

我有很多小文件(大小~1mb)需要分发。众所周知,hadoop和hdfs更喜欢大文件。但我不知道这是否也可以应用于分布式缓存,因为分布式文件存储在本地机器上。
如果需要合并它们,在hdfs上以编程方式合并文件的最佳方法是什么?
还有一个问题:使用symlink有什么好处?谢谢

hsgswve4

hsgswve41#

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

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

并在Map器/还原器中获取文件,如下所示:

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

在这里阅读更多

p8ekf7hl

p8ekf7hl2#

下面是cloudera关于小文件问题的博客。

相关问题