处理小文件的最佳方法是什么?我一直在阅读答案和阅读,我找不到任何真正好的方法来做到这一点。如果我在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看起来很不错,但生成它们看起来太贵了。