如果我有很多小文件(~hdfs block size)而没有几个大文件,那么一个作业产生的Map任务的数量会有所不同吗
68de4m5k1#
这要看是哪一个 InputFormat 使用,因为这是决定输入拆分计算的因素,从而决定Map任务的数量。如果使用默认值 TextInputFormat ,每个文件将至少有一个剥离,因此每个文件至少有一个Map器,即使这些文件只有几kb,每个Map器所做的工作也很少,但这为map/reduce框架带来了大量开销。也就是说,如果您能保证这些“小”文件将接近块大小,这可能并不重要。如果你无法控制你的文件,它们可能会变得非常小,我建议使用不同的 InputFormat 打电话 CombineFileInputFormat 它将多个输入文件合并到同一个分割中,在这种情况下,Map的数量将仅取决于数据的总体数量,而与文件的数量无关。在这里可以找到一个实现。
InputFormat
TextInputFormat
CombineFileInputFormat
1条答案
按热度按时间68de4m5k1#
这要看是哪一个
InputFormat
使用,因为这是决定输入拆分计算的因素,从而决定Map任务的数量。如果使用默认值
TextInputFormat
,每个文件将至少有一个剥离,因此每个文件至少有一个Map器,即使这些文件只有几kb,每个Map器所做的工作也很少,但这为map/reduce框架带来了大量开销。也就是说,如果您能保证这些“小”文件将接近块大小,这可能并不重要。如果你无法控制你的文件,它们可能会变得非常小,我建议使用不同的
InputFormat
打电话CombineFileInputFormat
它将多个输入文件合并到同一个分割中,在这种情况下,Map的数量将仅取决于数据的总体数量,而与文件的数量无关。在这里可以找到一个实现。