我正在测试单个节点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
任何人都可以对这种奇怪的减速器顺序执行有所了解吗?
答案 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