目录

  • 前言
  • 1. YARN Resource资源配置
  • 2. 资源配置参数
  • 3. YARN资源模型
  • 3.1 Resource Manager
  • 3.2 Node Manager
  • 4. MapReduce 使用 Resource

前言

部分内容摘自尚硅谷、黑马等等培训资料


1. YARN Resource资源配置

  YARN 支持可扩展的资源模型。默认情况下,YARN会跟踪所有节点,应用程序和队列的CPU和内存,但资源定义可以扩展为包含任意 “countable” 资源。可数资源是在容器运行时消耗的资源,但之后会释放,CPU 和内存都是可数资源。
  此外,YARN 还支持使用 “resource profiles”,允许用户通过单个配置文件指定多个资源请求,例如,“large” 可能意味着 8 个虚拟内核和 16GB RAM。
  默认情况,提交 MapReduce 程序运行至 YARN 集群时,日志信息中显示出resource-types.xml资源类型配置文件未到,原因在于没有进行 YARN Resource 配置。

2. 资源配置参数

  如果进行 YARN Resource 配置,相关参数说明如下:

  • 启动资源配置:yarn-site.xml
  • 参数:yarn.resourcemanager.resource-profiles.enabled,是否启用资源配置文件支持,默认为 false;
  • 资源类型配置:resource-types.xml
  • 参数:yarn.resource-types,逗号分隔的附加资源列表;
  • 参数:yarn.resource-types.<resource>.units,指定资源类型的默认单位;
  • 参数:yarn.resource-types.<resource>.minimum-allocation,指定资源类型的最小请求;
  • 参数:yarn.resource-types.<resource>.minimum-allocation,指定资源类型的最大请求;
  • 节点资源配置:node-resource.xml
  • 参数:yarn.nodemanager.resource-type.<resource>,节点管理器中可用的指定资源的数量;

  注意,如果使用resource-types.xmlnode-resources.xml文件,则还需要将它们放在与yarn-site.xml相同的配置目录[$HADOOP_HOME/etc/hadoop]中,或者将属性放入yarn-site.xml文件中。

3. YARN资源模型

  YARN 在资源模型设置与管理中,可以分为2个方面:ResourceManager 和 NodeManager 设置。

3.1 Resource Manager

  资源管理器是跟踪集群中哪些资源的最终仲裁者。资源管理器从 XML 配置文件加载其资源定义。例如,要定义除 CPU 和内存之外的新资源,应配置以下属性:

<property>
	<name>yarn.resource-types</name>
	<value>resource1,resource2</value>
	<description>
		The resources to be used for scheduling. 
Use resource-types.xml to specify details about the individual resource types.
	</description>
</property>

  对于定义的每个新资源类型,可以添加可选的单元属性以设置资源类型的默认单位,及具有可选的最小和最大属性。可以定义yarn-site.xml文件或在一个文件名为resource-types.xml中。

<configuration>
	<property>
		<name>yarn.resource-types</name>
		<value>resource1, resource2</value>
	</property>
	<property>
		<name>yarn.resource-types.resource1.units</name>
		<value>G</value>
	</property>
	<property>
		<name>yarn.resource-types.resource2.minimum-allocation</name>
		<value>1</value>
	</property>
	<property>
		<name>yarn.resource-types.resource2.maximum-allocation</name>
		<value>1024</value>
	</property>
</configuration>

3.2 Node Manager

  每个节点管理器独立定义该节点可用的资源。资源定义是通过为每个可用资源设置属性来完成的,可以放在通常的yarn-site.xml文件或名为noderesources.xml的文件中。属性的值应该是节点提供的资源量。例如:

<configuration>
	<property>
		<name>yarn.nodemanager.resource-type.resource1</name>
		<value>5G</value>
	</property>
	<property>
		<name>yarn.nodemanager.resource-type.resource2</name>
		<value>2m</value>
	</property>
</configuration>

  注意,此处资源的单位不需要与资源管理器持有的定义匹配,如果单位不匹配,会自动进行转换。

4. MapReduce 使用 Resource

  MapReduce 从 YARN 请求三种不同类型的容器:master container,map containers 和 reduce containers 。对于每种容器类型,都有一组相应的属性可用于设置所请求的资源。
  在 MapReduce 中设置资源请求的属性是:

属性

描述

yarn.app.mapreduce.am.resource.memory-mb

将应用程序主容器请求的内存设置为以 MB 为单位的值。默认为 1536

yarn.app.mapreduce.am.resource.vcores

将应用程序 master container 请求的 CPU 设置为该值。默认为 1

yarn.app.mapreduce.am.resource.<resource>

将应用程序 master container 的<resource> 请求的数量设置为该值

mapreduce.map.resource.memory-mb

将所有 map master container 请求的内存设置为以 MB 为单位的值。默认为 1024

mapreduce.map.resource.vcores

将所有映射 map master container 请求的 CPU 设置为该值。默认为 1

mapreduce.map.resource.<resource>

将所有 map master container 的 <resource> 请求的数量设置为该值

mapreduce.reduce.resource.memory-mb

将所有 educe task container 请求的内存设置为以 MB 为单位的值。默认为 1024

mapreduce.reduce.resource.<resource>

将所有 educe task container 的 <resource> 请求的数量设置为该值

  注意,YARN 可以修改这些资源请求以满足配置的最小和最大资源值,或者是配置增量的倍数。