MapReduce 任务数

Posted

技术标签:

【中文标题】MapReduce 任务数【英文标题】:Number of MapReduce tasks 【发布时间】:2017-02-23 19:36:14 【问题描述】:

我需要一些关于如何在我的应用程序中获得正确数量的 Map 和 Reduce 任务的帮助。 有什么方法可以发现这个号码吗?

谢谢

【问题讨论】:

您的作业计数器将显示作业使用的 Mapper 和 Reducer 的实际数量 【参考方案1】:

无法在应用程序执行之前获得实际的 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

ma​​p 任务的总数将等于每个文件的输入拆分数的总和。 reduce 的总数任务,它是1(默认)或等于mapreduce.job.reduces

【讨论】:

【参考方案2】:

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

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

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

reduce 任务的数量取决于conf.seNumReduceTask(num)mapreduce.job.reducesmapred.reduce.tasks 已弃用)。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于MapReduce 任务数的主要内容,如果未能解决你的问题,请参考以下文章

hadoop入门笔记MapReduce简介

MapReduce(6)特性

MapReduce 知识

学习笔记Hadoop—— Hadoop基础操作—— MapReduce常用Shell操作MapReduce任务管理

MapReduce

MapReduce任务学习系列