gpt4 book ai didi

hadoop - 在单节点Hadoop集群上将reducer计数增加到1以上会导致串行reducer的执行

转载 作者:行者123 更新时间:2023-12-02 20:06:24 24 4
gpt4 key购买 nike

在将其推送到群集之前,我正在单节点HDP 1.3.2实例上测试一些容量计划设置。我知道MR工作的默认reducer数量为1,除非您对其进行了覆盖,并且我认为就reducer而言,使用单个节点集群也可能会有一些特殊之处-这可能会导致此问题。

我在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-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个reduce任务...但是是串行的,而不是并行的。
然后,我禁用了Capacity-schedule.xml并运行了默认值100,并且... 2同时并行实现两个reducer-进度!

然后,我认为它必须是我的Capacity-schedule.xml文档,但是所有值似乎对并发化简任务也没有限制。
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

有人能对 reducer 这种奇怪的顺序执行情况有所了解吗?

最佳答案

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

关于hadoop - 在单节点Hadoop集群上将reducer计数增加到1以上会导致串行reducer的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22648230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com