【问题标题】:How concurrent # mappers and # reducers are calculated in Hadoop 2 + YARN?在 Hadoop 2 + YARN 中如何计算并发 #mappers 和 #reducers?
【发布时间】:2014-06-25 17:12:21
【问题描述】:

我已经搜索过一段时间,发现使用 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个容器。我忘记了什么?我做错了什么?

【问题讨论】:

  • 路易斯,你有想过这个吗?我相信这个公式更像是我的问题中链接到的 Cloudera 博客文章中的那个 - stackoverflow.com/questions/25193201/… - 但我发现它在 EMR 上不太正确。
  • 10 台机器集群的 6 个容器?这很奇怪。同一台机器总是没有任务吗?你有足够的映射器/减速器来启动吗?

标签: hadoop hadoop-yarn hadoop2


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多