2

我已经搜索过一段时间,我发现使用 hadoop2 + yarn 的 MapReduce 集群具有以下数量的并发映射并减少每个节点:

并发映射 # = yarn.nodemanager.resource.memory-mb / mapreduce.map.memory.mb 并发减少 # = yarn.nodemanager.resource.memory-mb / mapreduce.reduce.memory.mb

但是,我已经建立了一个包含 10 台机器的集群,具有以下配置:

'yarn_site' => {
  'yarn.nodemanager.resource.cpu-vcores' => '32',
  'yarn.nodemanager.resource.memory-mb' => '16793',
  'yarn.scheduler.minimum-allocation-mb' => '532',
  'yarn.nodemanager.vmem-pmem-ratio' => '5',
  'yarn.nodemanager.pmem-check-enabled' => 'false'
},
'mapred_site' => {
  'mapreduce.map.memory.mb' => '4669',
  'mapreduce.reduce.memory.mb' => '4915',
  'mapreduce.map.java.opts' => '-Xmx4669m',
  'mapreduce.reduce.java.opts' => '-Xmx4915m'
}

但是集群搭建好之后,hadoop允许整个集群有6个容器。我忘记了什么?我究竟做错了什么?

4

1 回答 1

1

不确定这是否与您遇到的问题相同,但我遇到了类似的问题,我在核心实例组中启动了一个包含 20 个 c3.8xlarge 节点的 EMR 集群,同样发现集群在运行作业(尽管我的特定集群的 YARN 和 MapReduce 中的内存/vcore 配置显示可以运行超过 500 个并发容器,但整个集群中只有 30 个映射器同时运行)。我在 AMI 3.5.0 上使用 Hadoop 2.4.0。

事实证明,实例组出于某种原因很重要。当我用任务实例组中的 20 个节点和只有 1 个核心节点重新启动集群时,这产生了巨大的差异。我有超过 500 多个映射器同时运行(在我的情况下,映射器主要从 S3 下载文件,因此不需要 HDFS)。

我不确定为什么不同的实例组类型会有所不同,因为两者都可以同等地运行任务,但显然它们的处理方式不同。

我想我会在这里提到它,因为我自己遇到了这个问题并且使用不同的组类型有所帮助。

于 2015-03-20T18:01:30.700 回答