gpt4 book ai didi

hadoop - 如何建议在 Hadoop 集群中更均衡地分配容器?

转载 作者:可可西里 更新时间:2023-11-01 15:48:41 28 4
gpt4 key购买 nike

我如何更改/建议不同的容器分配给 Hadoop 中的任务?关于 AWS 上的原生 Hadoop (2.9.1) 集群。

我在 AWS(使用 EC2,而不是 EMR)上运行原生 Hadoop 集群 (2.9.1),我希望容器(Mappers/Reducers)的调度/分配比目前更加平衡。看起来 RM 正在以 Bin Packing 方式(数据所在的位置)分配 Mappers,对于 reducers,它似乎更平衡。我的设置包括三台机器,复制率为三(所有数据都在每台机器上),我用 mapreduce.job.reduce.slowstart.completedmaps=0 运行我的作业,以便尽快开始洗牌(这对我很重要即所有容器并发,这是必须条件)。此外,根据我选择的 EC2 实例和 YARN 集群的设置,我最多可以运行 93 个容器(每个容器 31 个)。

例如,如果我想要 9 个 reducer,那么 (93-9-1=83) 83 个容器可以留给映射器,一个留给 AM。我玩过拆分输入的大小(mapreduce.input.fileinputformat.split.minsize,mapreduce.input.fileinputformat.split.maxsize),以便找到正确的平衡,所有机器都具有相同的“工作” map 阶段。但似乎前 31 个映射器将分配在一台机器上,接下来的 31 个映射器分配给第二台机器,最后 31 个映射器分配在最后一台机器上。因此,我可以尝试使用 87 个映射器,其中 31 个在机器 #1 中,另外 31 个在机器 #2 中,另外 25 个在机器 #3 中,其余的留给 reducer ,因为机器 #1 和机器 #2 完全被占用,那么 reducer 必须放置在机器 #3 中。通过这种方式,我以不平衡的 reducer 分配为代价获得了几乎平衡的映射器分配。而这不是我想要的...

# of mappers = size_input/split size [Bytes],

拆分大小= max(mapreduce.input.fileinputformat.split.minsize, min(mapreduce.input.fileinputformat.split.maxsize, dfs.blocksize))

最佳答案

我使用的是默认调度程序(容量),默认情况下 yarn.scheduler.capacity.per-node-heartbeat.maximum-container-assignments 设置为 -1(无穷大),这解释了原因每个首先响应 RM(使用 Heartbeat)的节点都在尽可能多地“打包”容器。总而言之,将上述参数插入到 hadoop/etc/hadoop/capacity-scheduler.xml 中(使用三分之一数量的映射器将导致映射器的平衡调度)并在 yarn rmadmin -refreshQueues 之后重新启动 RM 将授予您平衡 YARN 中容器分配的选项。

更多详情请搜索我的讨论here .

关于hadoop - 如何建议在 Hadoop 集群中更均衡地分配容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54056970/

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