【问题标题】:Issue allocating resources (Number of Mappers) in EMR MapReduce2 YARN在 EMR MapReduce2 YARN 中分配资源(映射器数量)问题
【发布时间】:2026-02-02 18:25:02
【问题描述】:

我有一个非常小的新 EMR 集群可供使用,我正在尝试将每个节点的并发映射器数量限制为 2。我通过将默认 cpu-vcores 调整为 2 来尝试此操作。

使用的公式:

min((yarn.nodemanager.resource.memory-mb / mapreduce.map.memory.mb),
    (yarn.nodemanager.resource.cpu-vcores / mapreduce.map.cpu.vcores))

集群配置:

AMI version: 3.3.1
Hadoop distribution: Amazon 2.4.0
Core: 4 m1.large

工作配置:

yarn.nodemanager.resource.memory-mb:5120
mapreduce.map.memory.mb:768

yarn.nodemanager.resource.cpu-vcores: 2
mapreduce.map.cpu.vcores: 1

因此,我目前看到 22 个映射器同时运行。除了根据公式是错误的之外,这根本没有意义,因为我有 4 个核心。有什么想法吗?

【问题讨论】:

    标签: hadoop mapreduce hadoop-yarn emr hadoop2


    【解决方案1】:

    我还没有经历过公式的第二部分(带有 vcores 的那个)在我工作的小型专用集群上发生过(尽管它应该根据公式)。我还在某处读到 YARN 在分配资源时不考虑 cpu 内核(即它仅根据内存要求进行分配)。

    至于内存计算,yarn.nodemanager.resource.memory-mb 是每个节点的设置,但仪表板通常会为您提供集群范围内的数字,因此在您将 yarn.nodemanager.resource.memory-mb 除以 mapreduce.map.memory.mb 之前,将其乘以集群中的节点数,即

    (yarn.nodemanager.resource.memory-mb*number_of_nodes_in_cluster) / mapreduce.map.memory.mb 
    

    【讨论】: