【发布时间】:2015-10-16 15:56:06
【问题描述】:
我听说有一种方法可以向 Hadoop 2.7 纱线中的 1 个容器添加 32 个内核或任何你拥有的内核。
这可能吗?有人有我需要更改以实现此目的的示例配置吗?
测试将是 terasort,将我的 40 个内核添加到 1 个容器作业中。
【问题讨论】:
标签: hadoop mapreduce hadoop-yarn
我听说有一种方法可以向 Hadoop 2.7 纱线中的 1 个容器添加 32 个内核或任何你拥有的内核。
这可能吗?有人有我需要更改以实现此目的的示例配置吗?
测试将是 terasort,将我的 40 个内核添加到 1 个容器作业中。
【问题讨论】:
标签: hadoop mapreduce hadoop-yarn
以下是 vCore 的配置:
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 中设置另外两个配置参数:
mapper/reducer 请求的资源计算在调度程序代码中完成。如果您希望调度程序同时考虑内存和 CPU 进行资源计算,那么您需要使用 "DominantResourceCalculator"(它同时考虑 CPU 和内存进行资源计算)
例如如果您使用的是容量调度程序,那么您需要在“capacity-scheduler.xml”文件中指定以下参数:
<property>
<name>yarn.scheduler.capacity.resource-calculator</name>
<value>org.apache.hadoop.yarn.util.resource.DominantResourceCalculator</value>
</property>
这里给出了各种配置参数的详细描述。
【讨论】:
老实说,我对 Hadoop 2.7 了解不多,但如果映射器能够利用更多线程,则可以通过设置这些属性来设置每个映射(或减少)容器的核心数在mapred-site.xml 文件中:
mapreduce.map.cpu.vcores - 每个地图任务从调度程序请求的虚拟核心数。
mapreduce.reduce.cpu.vcores - 为每个 reduce 任务从调度程序请求的虚拟核心数。
【讨论】: