我正在将我们的应用程序从Hadoop 1.0.3迁移到2.7,在EMR v5.1.0上。我让它运行了,但是我仍然无法在Yarn的资源分配系统中解决问题。使用EMR提供的默认设置,即使我为节点选择了更大的实例类型,Hadoop也只为每个节点分配一个容器。这是一个问题,因为我们现在使用两倍的节点来完成相同的工作量。
我想将更多容器压缩到一个节点,和确保我们使用所有可用资源。我认为我不应该触摸yarn.nodemanager.resource.memory-mb
或yarn.nodemanager.resource.cpu-vcores
,因为这些是由EMR设置的,以反映实际可用资源。我必须更改哪些设置?
答案 0 :(得分:1)
您的容器大小是通过设置内存(容器的默认条件)和vcores来定义的。可以配置以下内容:
纱线scheduler.increment分配-MB
纱线scheduler.minimum分配-vcores
必须满足以下所有条件(它们是每个容器,除了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