SequenceFiles与HAR的vs vs Hadoop中的CombineFileInputFormat

Gui*_*lle 5 hadoop

处理小文件的最佳方法是什么?我一直在阅读答案和阅读,我找不到任何真正好的方法来做到这一点.如果我在HDFS中有20Tb的小数据,我该怎么办?如果我要多次处理我的数据,我会把它们变成SequenceFiles,但如果我只处理它们会发生什么呢?

我已经阅读了一些可能性,如果有更多的东西,有人可以纠正我的一些,那就太好了.

SequenceFiles.

缺点:问题是我必须运行mapreduce,所以如果我只想处理一次数据,我认为这不值得.如果我必须运行如此多的mapreduce作为我拥有的文件,为什么我要浪费时间将我的文件转换为SequenceFile?

PROS:它节省了nameNode中的空间,并且实现了一个SequenceInputFormat.

缺点:我有很多mapreduces文件.它在NameNode中花费了太多内存

CombineFileInputFormat

缺点:它在NameNode中花费了太多内存

PROS:它可以按块组合文件,因此我不必执行与文件一样多的映射.

HAR的

缺点:如果我想生成,我必须执行mapreduce作业,与SequenceFiles相同.有些点文件是重复的,所以我需要额外的内存来生成它们,之后我可以删除旧文件.

PROS:我们可以打包文件,我不确定每个HAR是否只有一个mapreduce.

我正在寻找一种方法来打包(如果它可以压缩文件)并且不必执行一个mapreduce每个文件而不执行mapreduce来生成那些"新"文件,同时节省内存在NameNode中.SequenceFiles看起来很不错,但生成它们看起来太昂贵了.