我已经注意到这种行为,当我有许多小gz文件的kb。 Hadoop 完成这项工作需要更多的时间。与我将那些小的gz文件合并成一个大的gz文件不同。还有,小gz文件中的mapper个数和文件个数是一样的,为什么我会这样呢?但在后一种情况下,它只是一个。所以,这可能是一个原因,是吗?
Hadoop
bjp0bcyl1#
hadoop通常可以很好地处理少量的大文件,而不是相反。默认情况下,mapreduce为每个必须处理的输入文件分配一个Map任务。因此,如果您有许多小gz文件,那么默认情况下,每个文件都有自己的Map器来处理该文件。通常,jvm初始化与实际处理相隔大约几秒钟。因此,随着文件数量的增加,时间也在增加。建议使用接近块大小的文件,以消除小文件问题。看看这篇来自cloudera的博客文章和这个sf问题。
1条答案
按热度按时间bjp0bcyl1#
hadoop通常可以很好地处理少量的大文件,而不是相反。
默认情况下,mapreduce为每个必须处理的输入文件分配一个Map任务。因此,如果您有许多小gz文件,那么默认情况下,每个文件都有自己的Map器来处理该文件。通常,jvm初始化与实际处理相隔大约几秒钟。因此,随着文件数量的增加,时间也在增加。
建议使用接近块大小的文件,以消除小文件问题。
看看这篇来自cloudera的博客文章和这个sf问题。