如何使Hadoop / EMR每个节点使用更多容器

时间:2016-11-29 16:10:25

标签: hadoop hadoop2 emr

我正在将我们的应用程序从Hadoop 1.0.3迁移到2.7,在EMR v5.1.0上。我让它运行了,但是我仍然无法在Yarn的资源分配系统中解决问题。使用EMR提供的默认设置,即使我为节点选择了更大的实例类型,Hadoop也只为每个节点分配一个容器。这是一个问题,因为我们现在使用两倍的节点来完成相同的工作量。

我想将更多容器压缩到一个节点,确保我们使用所有可用资源。我认为我不应该触摸yarn.nodemanager.resource.memory-mbyarn.nodemanager.resource.cpu-vcores,因为这些是由EMR设置的,以反映实际可用资源。我必须更改哪些设置?

1 个答案:

答案 0 :(得分:1)

您的容器大小是通过设置内存(容器的默认条件)和vcores来定义的。可以配置以下内容:

  1. 纱线scheduler.minimum分配-MB
  2. 纱线scheduler.maximum分配-MB
  3. 纱线scheduler.increment分配-MB

  4. 纱线scheduler.minimum分配-vcores

  5. 纱线scheduler.maximum分配-vcores
  6. 纱线scheduler.increment分配-vcores
  7. 必须满足以下所有条件(它们是每个容器,除了yarn.nodemanager.resource.cpu-vcores和yarn.nodemanager.resource.memory-mb,它们是每个NodeManager因此每个DataNode):

    1< = yarn-scheduler.minimum-allocation-vcores< = yarn-scheduler.maximum-allocation-vcores

    yarn-scheduler.maximum-allocation-vcores< = yarn.nodemanager.resource.cpu-vcores

    yarn-scheduler.increment-allocation-vcores = 1

    1024< = yarn-scheduler.minimum-allocation-mb< = yarn-scheduler.maximum-allocation-mb

    yarn-scheduler.maximum-allocation-mb< = yarn.nodemanager.resource.memory-mb

    yarn-scheduler.increment-allocation-mb = 512

    您还可以看到此有用的链接https://www.cloudera.com/documentation/enterprise/5-4-x/topics/cdh_ig_yarn_tuning.html