2013-04-06 64 views
2

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

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

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

回答

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"); 
     } 

更多here

+0

谢谢。我会尝试。你对性能有什么想法吗?它会增加吗? – v4r 2013-04-06 19:51:43

+0

我没有对它进行基准测试,但它确实有所提高。 – Amar 2013-04-07 07:39:52

2

下面是Cloudera的一个blog对小文件的问题。

相关问题