在单节点hadoop集群案例中,将reducer计数增加到1以上串行reducer执行

j2datikz  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(405)

在将单节点hdp1.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

capacity-schedule.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个reduce任务。。。但是串行的,不是并行的。然后我禁用了capacity-schedule.xml并运行了默认值100,然后。。。2同时实现两个减速器并联-进行中!
然后我认为它一定是我的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

有人能解释一下异径管的这种奇怪的顺序执行吗?

vltsax25

vltsax251#

好的,解决方法是增加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.

问题是插槽大小需要等于作业任务大小

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

相关问题