2014-12-04 76 views
0

我一直注意到这种行为,当我有许多KB的小gz文件。 Hadoop工作需要更多时间才能完成。相比之下,当我将这些小gz文件合并成一个大的gz文件。另外,小gz文件情况下的映射器数量与文件数量相同,为什么是这样呢?但在后一种情况下,它只是一个。那么,这可能是一个原因,是吗?随着输入gz文件数量的增加,Hadoop作业完成时间增加

回答

1

Hadoop通常可以很好地处理少量的大文件,而不是相反。

默认情况下,MapReduce会为每个必须处理的输入文件分配一个映射任务。因此,如果你有很多小的gz文件,那么默认情况下每个文件都有自己的映射器来处理文件。一般来说,JVM初始化与实际处理相隔几秒钟。因此,随着文件数量的增加,您会看到时间在增加。

建议让文件接近块大小以消除小文件问题。

看看这个blog post从cloudera和这个SF question以及。

相关问题