MapReduce 任务数

Number of MapReduce tasks

我需要一些帮助,了解如何在我的应用程序中获得正确数量的 Map 和 Reduce 任务。 有什么办法可以查到这个号码吗?

谢谢

map 任务的数量等于任何作业中输入拆分的数量,您可以找到其中任何一个来找到您可以明确设置的映射器和缩减器的数量。此外,一旦您 运行 map reduce 作业,您可以观察生成的日志以找出您的作业中映射器和 reducer 的数量。

无法在应用程序执行前获取实际的map和reduce任务数,因为在执行前无法准确确定任务失败后重试和推测执行尝试的因素,可以推导出大概的任务数。

MapReduce 作业的 Map 任务总数取决于其输入文件及其文件格式。
对于每个输入文件,计算拆分,每个输入拆分将调用一个映射任务。

拆分大小将根据

计算
input_split_size = max(mapreduce.input.fileinputformat.split.minsize, min(mapreduce.input.fileinputformat.split.maxsize, dfs.blocksize))

如果属性

  • mapreduce.input.fileinputformat.split.minsize

  • mapreduce.input.fileinputformat.split.maxsize

    在默认情况下,考虑到文件是可拆分的,文件的输入拆分大小将大约等于其 blocksize

地图任务总数将等于每个文件的输入分割数之和。
reduce任务总数,默认为1或等于mapreduce.job.reduces.

映射器的数量取决于 HDFS 中的文件块大小(默认情况下) 和输入拆分大小(如果我们指定的不是默认值)。

如果假设您有 128MB 的文件并且 hdfs 块大小为 64MB,那么由于默认行为,映射任务的数量将为 2。

并且如果您的输入拆分大小为 32MB,但 hdfs 块大小为 64MB,则映射任务的时间数将为 4。 因此,map 任务取决于上面定义的所有三个因素。

The number of reduce task depends on conf.seNumReduceTask(num) or mapreduce.job.reduces (mapred.reduce.tasks is deprecated).