0

在 MRv1 中,我们有以下两个可配置参数来设置每个节点的 Map 和 reduce 槽数。

mapred.tasktracker.map.tasks.maximum
mapred.tasktracker.reduce.tasks.maximum

此外,建议 Map 槽的数量略高于 Reduce 槽的数量。Map Reduce 作业的理想化简器数量应等于或大于集群中可用的化简槽数。

如果我的上述理解对 MRv1 不正确,请更正...

在 MRv2 中,我们不再有插槽的概念,而是容器为执行 Map/Reduce 任务提供所需的内存和 CPU。

我的问题来了,如何确定 MRv2 中任何 Map Reduce 作业的减速器数量?

谢谢

4

1 回答 1

0

mapred.tasktracker.reduce.tasks.maximum被替换为

mapreduce.tasktracker.reduce.tasks.maximum

reduce此属性表示给定任务跟踪器节点可以运行的最大并发槽数。

mapred.tasktracker.map.tasks.maximum被替换为

mapreduce.tasktracker.map.tasks.maximum

map slots此属性表示给定任务跟踪器节点可以运行的最大并发数。

使用 YARN 和 MapReduce 2,不再为 Map 和 Reduce 任务预配置静态槽。整个集群可用于根据作业需要对 Maps 和 Reduces 进行动态资源分配。

但是,如果您想为您的作业分配减速器的数量,您仍然可以通过在 Map/Reduce 作业中指定以下属性来完成。

mapreduce.job.reduces

请查看此链接以了解更多信息。

Mapper 的数量基本上是根据数据的输入拆分数量分配的。假设您正在处理 1GB 数据集,HDFS 块大小为 128MB,并且您没有在作业中指定任何拆分大小,那么1GB/128MB=8将考虑拆分并将 8 个 Mapper 分配给该作业,但假设您在您的作业中指定了拆分大小 512MB代码然后1GB/512MB=2映射器将被考虑并分配给这个作业。

请查看此链接以了解更多信息。

于 2015-06-23T09:07:51.003 回答