在MRv1中,我们有以下两个可配置参数来设置每个节点的Map和减少插槽的数量。
mapred.tasktracker.map.tasks.maximum
mapred.tasktracker.reduce.tasks.maximum
同样建议将Map插槽的数量略高于Reduce插槽的数量。 Map Reduce作业的理想减速器数量将等于或大于群集中可用的减少时隙数量。
如果我的上述理解不正确,请更正MRV1 ......
在MRv2中,我们不再使用插槽的概念,而是容器为Map / Reduce taks执行提供了所需的内存和CPU。
我的问题是,如何确定MRv2中任何Map Reduce作业的缩减器数量?
由于
答案 0 :(得分: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任务预先配置静态插槽。整个群集可用于动态资源分配地图,并根据作业的需要减少。
但是如果你想为你的工作分配减速器的数量,你仍然可以通过在Map / Reduce工作中指定以下属性来实现。
mapreduce.job.reduces
请参阅此link以了解详情。
Mapper的数量基本上是根据数据的输入分割数分配的。假设您正在处理1GB数据集并且HDFS块大小为128MB并且您没有在作业中指定任何拆分大小,那么将考虑1GB/128MB=8
拆分并将8 Mapper分配给此作业,但假设您已指定在您的代码中拆分大小为512MB,然后1GB/512MB=2
映射器将被考虑并分配给此工作。
请参阅此link以了解有关它的更多信息。