首页 > 解决方案 > 控制集群中每个节点上的映射器数量

问题描述

我有一个非常小的 2 节点Hadoop-HBase集群。我正在MapReduce上面执行作业。我用Hadoop-2.5.2. 我MapReduce在每个节点中有 32GB(每个节点有 64GB 内存)可用,yarn 站点中的配置如下

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>32768</value>
</property>
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>15</value>
</property>

对于每个执行的映射器/减速器,我的资源要求是 2GB。我在mapred-site.xml给定这些配置中进行了配置,总共有大约 64GB 的内存和 30 个 vcore,我看到大约 31 个映射器或 31 个减速器并行执行。

虽然这一切都很好,但我正在努力弄清楚其中的一部分。并行执行的映射器或减速器的数量在两个节点上并不相同,其中一个节点的任务数量高于另一个节点。为什么会这样?这可以控制吗?如果是这样,怎么做?

我想 YARN 不会将其视为节点的资源,而是集群的资源,并在集群中的任何地方生成任务。这种理解正确吗?如果不是,在 MR 执行期间对上述行为的正确解释是什么?

标签: hadoopmapreducehadoop-yarnresource-management

解决方案


推荐阅读