我已经搜索了一段时间,我发现使用hadoop2 + yarn的MapReduce集群具有以下数量的并发映射和每个节点的reduce:
并发映射# = yarn.nodemanager.resource。内存-mb/mapreduce.map.memory.mb并发减少# = yarn.nodemanager.resource。内存-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个容器。我忘了什么?我做错了什么?
不确定这是否与您遇到的问题相同,但我有一个类似的问题,我在核心实例组中启动了一个包含20个c3.8xlarge节点的EMR集群,并且同样发现集群在运行作业时严重未被充分利用(整个集群中只有30个映射器并发运行,尽管YARN和MapReduce中的内存/vcore配置显示超过500个并发容器可以运行)。我在AMI 3.5.0上使用Hadoop 2.4.0。
由于某种原因,实例组很重要。当我重新启动集群时,任务实例组中有20个节点,只有1个核心节点,这产生了巨大的差异。我有超过500个映射器并发运行(在我的情况下,映射器主要是从S3下载文件,因此不需要HDFS)。
我不确定为什么不同的实例组类型会产生差异,因为它们都可以平等地运行任务,但显然它们被不同地对待。
我想我应该在这里提一下,因为我自己也遇到过这个问题,使用不同的组类型有帮助。