在单节点上将Reducer Count增加到1以上Hadoop集群会执行串行减速器执行

时间:2014-03-25 23:08:23

标签: hadoop mapreduce hortonworks-data-platform

我正在测试单个节点HDP 1.3.2实例上的一些容量计划设置,然后再将其推送到群集。我知道MR工作的默认减速器数量是1,除非你覆盖它,我认为在减速器方面也可能有一些特性与单节点集群一起工作 - 这可能会导致这个问题。

我在mapred-site.xml文件中设置的值是:

mapred.cluster.map.memory.mb=768
mapred.tasktracker.map.tasks.maximum=8
mapred.cluster.max.map.memory.mb=6144
mapred.job.map.memory.mb=1536

mapred.cluster.reduce.memory.mb=512
mapred.tasktracker.reduce.tasks.maximum=8
mapred.cluster.max.reduce.memory.mb=4096
mapred.job.reduce.memory.mb=2048

能力shedule.xml:

mapred.capacity-scheduler.queue.default.capacity=50 
(4 reducers appear on localhost:50030/scheduler for this default queue)
mapred.capacity-scheduler.queue.queue1.capacity=25
mapred.capacity-scheduler.queue.queue2.capacity=25

我使用以下参数运行1M行terasort程序:

hadoop jar /usr/lib/hadoop/hadoop-examples.jar terasort -Dmapred.job.queue.name=default -Dmapred.reduce.tasks=4 ./terasort-input-small ./terasort-output

它确实运行了4个减少任务......但是是串行的,而不是并行的。 然后我禁用了capacity-schedule.xml并运行了默认的100,并且...... 2并行地实现了两个reducer - 进度!

然后我认为它必须是我的capacity-schedule.xml文档,但所有值似乎对并发reduce任务没有限制。

mapred.capacity-scheduler.default-init-accept-jobs-factor=10
mapred.capacity-scheduler.default-maximum-active-tasks-per-queue=200000
mapred.capacity-scheduler.default-maximum-active-tasks-per-user=100000
mapred.capacity-scheduler.default-minimum-user-limit-percent=100
mapred.capacity-scheduler.default-supports-priority=false
mapred.capacity-scheduler.default-user-limit-factor=1
mapred.capacity-scheduler.init-poll-interval=5000
mapred.capacity-scheduler.init-worker-threads=5
mapred.capacity-scheduler.maximum-system-jobs=3000
mapred.capacity-scheduler.queue.default.init-accept-jobs-factor=10
mapred.capacity-scheduler.queue.default.maximum-capacity=-1
mapred.capacity-scheduler.queue.default.maximum-initialized-active-tasks=200000
mapred.capacity-scheduler.queue.default.maximum-initialized-active-tasks-per-user=100000
mapred.capacity-scheduler.queue.default.minimum-user-limit-percent=100
mapred.capacity-scheduler.queue.default.supports-priority=false
mapred.capacity-scheduler.queue.default.user-limit-factor=1
mapred.capacity-scheduler.queue.default.capacity=50
mapred.capacity-scheduler.queue.queue1.capacity=25
mapred.capacity-scheduler.queue.queue2.capacity=25

任何人都可以对这种奇怪的减速器顺序执行有所了解吗?

1 个答案:

答案 0 :(得分:1)

好的解决办法是增加mapred.cluster.reduce.memory.mb

mapred.cluster.reduce.memory.mb=768MB #allowed 2 reducers to run at once
mapred.cluster.reduce.memory.mb=1536MB #allowed all 4 reducers to run at once.

问题是Slot size需要等于Job Task的大小,即

mapred.job.reduce.memory.mb = mapred.cluster.reduce.memory.mb