我已经搜索了一段时间,我发现使用hadoop2 + yarn的MapReduce群集具有以下数量的并发映射并减少每个节点:
Concurrent Maps#= 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个容器。我忘记了什么?我做错了什么?
答案 0 :(得分:1)
不确定这是否与您遇到的问题相同,但我遇到了类似问题,我在核心实例组中启动了一个包含20个c3.8xlarge节点的EMR集群发现在运行作业时集群严重未充分利用(整个集群中只有30个映射器同时运行,即使YARN中的内存/ vcore配置和我的特定集群的MapReduce显示可以运行超过500个并发容器)。我在AMI 3.5.0上使用Hadoop 2.4.0。
事实证明,实例组因某种原因而重要。当我在任务实例组中仅重新启动具有20个节点的群集且仅有1个核心节点时,这产生了巨大差异。我同时运行了500多个映射器(在我的情况下,映射器主要是从S3下载文件,因此不需要HDFS)。
我不确定为什么不同的实例组类型会有所不同,因为两者都可以同等地运行任务,但显然它们的处理方式不同。
我想我会在这里提到它,因为我自己遇到了这个问题并且使用了不同的团体类型。