我有很多小文件(大小〜1MB),我需要分发。众所周知,Hadoop和HDFS更喜欢大文件。但我不知道这是否也可以应用到分布式缓存,因为分布式文件存储在本地机器上。将小文件合并到Hadoop分布式缓存的大文件中?
如果需要合并它们,在HDFS上以编程方式合并文件的最佳方式是什么?
还有一个问题:使用符号链接有什么好处?由于
我有很多小文件(大小〜1MB),我需要分发。众所周知,Hadoop和HDFS更喜欢大文件。但我不知道这是否也可以应用到分布式缓存,因为分布式文件存储在本地机器上。将小文件合并到Hadoop分布式缓存的大文件中?
如果需要合并它们,在HDFS上以编程方式合并文件的最佳方式是什么?
还有一个问题:使用符号链接有什么好处?由于
您可以创建你的所有小文件的存档(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
下面是Cloudera的一个blog对小文件的问题。
谢谢。我会尝试。你对性能有什么想法吗?它会增加吗? – v4r 2013-04-06 19:51:43
我没有对它进行基准测试,但它确实有所提高。 – Amar 2013-04-07 07:39:52