InputSplit的大小或映射任务数是否受输入文件数量的影响

时间:2013-02-09 00:54:45

标签: hadoop mapreduce hdfs

如果我有很多小文件(~HDFS块大小)与几个大文件相比,它会对作业生成的地图任务数量产生影响

1 个答案:

答案 0 :(得分:3)

它取决于您使用的InputFormat,因为这决定了输入拆分计算,从而决定了地图任务的数量。

如果你使用默认的TextInputFormat,每个文件至少会有1个分割,所以每个文件至少有1个映射器,即使这些文件只有几KB,每个映射器做的工作也很少,但是这个介绍Map / Reduce框架的大量开销。如果你保证这些“小”文件接近块大小,那可能并不重要。

如果您无法控制文件并且它们可能变得非常小,我建议使用另一个InputFormat名为CombineFileInputFormat的{​​{1}},它将多个输入文件组合在同一个分割中,无论文件数量多少,这种情况都只取决于整体数据量。可以找到实施here