Hadoop在Hadoop 2.7上为每个容器添加超过1个核心

时间:2015-10-16 15:56:07

标签: hadoop mapreduce yarn

我听说有一种方法可以在Hadoop 2.7纱线的基础上添加32个核心或核心到1个容器。

这是否可行,是否有人对我需要更改的内容进行了示例配置以实现此目的?

测试将是terasort,将我的40个内核添加到1个容器中。

2 个答案:

答案 0 :(得分:1)

对于vCores,以下是配置:

yarn.scheduler.maximum-allocation-vcores - 为每个容器请求指定vCore的最大分配

通常在 yarn-site.xml 中,您将此值设置为32.我认为,任何大于32的值都将被YARN拒绝。

  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>32</value>
  </property>

如果未设置此值,则YARN RM采用默认值,即“4”

public static final int DEFAULT_RM_SCHEDULER_MAXIMUM_ALLOCATION_VCORES = 4;

如果您正在运行MapReduce应用程序,那么您还需要在 mapred-site.xml 中再设置两个配置参数:

  • mapreduce.map.cpu.vcores - 要从调度程序请求地图任务的vCore数
  • mapreduce.reduce.cpu.vcores - 调度程序为reduce任务请求的vCore数

mapper / reducer请求的资源计算在调度程序代码中完成。如果您希望调度程序考虑内存和CPU进行资源计算,那么您需要使用“DominantResourceCalculator”(它考虑CPU和内存以进行资源计算)

例如如果您使用的是Capacity Scheduler,则需要在“ capacity-scheduler.xml ”文件中指定以下参数:

  <property>
    <name>yarn.scheduler.capacity.resource-calculator</name>
    <value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
  </property>

请检查此链接:http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_yarn_tuning.html

这提供了各种配置参数的详细说明。

答案 1 :(得分:0)

老实说,我对 Hadoop 2.7 了解不多,但如果映射器能够使用更多线程,则可以通过此设置设置每个映射(或减少)容器的核心数量mapred-site.xml文件中的这些属性:

  

mapreduce.map.cpu.vcores - 每个地图任务从调度程序请求的虚拟核心数。

     

mapreduce.reduce.cpu.vcores - 每个reduce任务从调度程序请求的虚拟核心数。

请参阅Hadoop documentation