YARN支持可扩展的资源模型。默认情况下,YARN跟踪所有节点,应用程序和队列的CPU和内存,但是资源定义可以扩展为包括任意“可数”资源。可数资源是在容器运行时消耗但随后释放的资源。CPU和内存都是可数的资源。其他示例包括GPU资源和软件许可证。
此外,YARN还支持使用“资源配置文件”,这使用户可以通过单个配置文件指定多个资源请求,类似于Amazon Web Services Elastic Compute Cluster实例类型。例如,“大”可能意味着8个虚拟内核和16GB RAM。
支持以下配置属性。有关详情,请参见下文。
yarn-site.xml
配置属性 | 描述 |
---|---|
yarn.resourcemanager.resource-profiles.enabled | 指示是否启用资源配置文件支持。默认为false。 |
resource-types.xml
配置属性 | 描述 |
---|---|
yarn.resource-types | 以逗号分隔的其他资源列表。可能不包含memory,memory-mb或vcores |
yarn.resource-types。<资源>。单位 | 指定资源类型的默认单位 |
yarn.resource-types。<resource> .minimum-allocation | 指定资源类型的最小请求 |
yarn.resource-types。<resource>。最大分配 | 指定资源类型的最大请求 |
node-resources.xml
配置属性 | 描述 |
---|---|
yarn.nodemanager.resource-type。<资源> | 节点管理器中可用的指定资源的计数 |
请注意,如果使用resource-types.xml和node-resources.xml文件,它们也需要与yarn-site.xml放在同一配置目录中。或者,可以将属性放置在yarn-site.xml文件中。
资源管理器是跟踪集群中哪些资源的最终仲裁者。资源管理器从XML配置文件加载其资源定义。例如,要定义除CPU和内存之外的新资源,应配置以下属性:
<配置> <属性> <name> yarn.resource-types </ name> <value> resource1,resource2 </ value> <说明> 用于调度的资源。使用resource-types.xml 指定有关各个资源类型的详细信息。 </ description> </ property> </ configuration>
有效的资源名称必须以字母开头,并且只能包含字母,数字以及以下任何一个:“。”,“ _”或“-”。有效的资源名称也可以可选地在名称空间之后加上斜杠。有效的名称空间由句点分隔的字母,数字和破折号组成。例如,以下是有效的资源名称:
以下是无效资源名称的示例:
对于定义的每种新资源类型,可以添加可选的单位属性以设置资源类型的默认单位。有效值为:
单位名称 | 含义 |
---|---|
p | 微微 |
ñ | 纳米 |
ü | 微 |
米 | 毫 |
默认值,即无单位 | |
ķ | 公斤 |
中号 | 兆 |
G | 千兆 |
Ť | 泰拉 |
P | 佩塔 |
文 | 二进制公斤,即1024 |
弥 | 二进制兆,即1024 ^ 2 |
GI | 二进制千兆字节,即1024 ^ 3 |
钛 | 二进制兆位,即1024 ^ 4 |
皮 | 二进制Peta,即1024 ^ 5 |
该属性必须命名为yarn.resource-types。<resource> .units。每个定义的资源还可以具有可选的最小和最大属性。这些属性必须分别命名为yarn.resource-types。<resource> .minimum-allocation和yarn.resource-types。<resource> .maximum-allocation。
所述yarn.resource类型属性和任何单元,mimimum,或最大性能可以以通常的定义纱线的site.xml文件或在一个文件名为资源的types.xml。例如,以下内容可能会出现在两个文件中:
<配置> <属性> <name> yarn.resource-types </ name> <value> resource1,resource2 </ value> </ property> <属性> <name> yarn.resource-types.resource1.units </ name> <value> G </ value> </ property> <属性> <name> yarn.resource-types.resource2.minimum-allocation </ name> <value> 1 </ value> </ property> <属性> <name> yarn.resource-types.resource2.maximum-allocation </ name> <value> 1024 </ value> </ property> </ configuration>
每个节点管理器独立定义该节点可用的资源。通过为每个可用资源设置属性来完成资源定义。该属性必须命名为yarn.nodemanager.resource-type。<resource>,并且可以放置在通常的yarn-site.xml文件或名为noderesources.xml的文件中。该属性的值应为节点提供的资源量。例如:
<配置> <属性> <name> yarn.nodemanager.resource-type.resource1 </ name> <value> 5G </ value> </ property> <属性> <name> yarn.nodemanager.resource-type.resource2 </ name> <value> 2m </ value> </ property> </ configuration>
请注意,用于这些资源的单位不必与资源管理器所保存的定义相匹配。如果单位不匹配,资源管理器将自动进行转换。
MapReduce向YARN请求三种不同类型的容器:应用程序主容器,映射容器和reduce容器。对于每种容器类型,都有一组对应的属性可用于设置请求的资源。
在MapReduce中设置资源请求的属性为:
属性 | 描述 |
---|---|
yarn.app.mapreduce.am.resource.mb | 将为应用程序主容器请求的内存设置为MB值。不再是首选。请改用yarn.app.mapreduce.am.resource.memory-mb。默认为1536 |
yarn.app.mapreduce.am.resource.memory | 将为应用程序主容器请求的内存设置为MB值。不再是首选。请改用yarn.app.mapreduce.am.resource.memory-mb。默认为1536 |
yarn.app.mapreduce.am.resource.memory-mb | 将为应用程序主容器请求的内存设置为MB值。默认为1536 |
yarn.app.mapreduce.am.resource.cpu-vcores | 将为应用程序主容器请求的CPU设置为该值。不再是首选。请改用yarn.app.mapreduce.am.resource.vcores。默认为1。 |
yarn.app.mapreduce.am.resource.vcores | 将为应用程序主容器请求的CPU设置为该值。默认为1。 |
yarn.app.mapreduce.am.resource。<资源> | 将应用程序主容器请求的<resource>数量设置为该值。如果未指定单位,则假定资源的默认单位。请参阅上面有关单位的部分。 |
mapreduce.map.memory.mb | 将所有映射任务容器请求的内存设置为MB值。不再是首选。请改用mapreduce.map.resource.memory-mb。默认为1024。 |
mapreduce.map.resource.memory | 将所有映射任务容器请求的内存设置为MB值。不再是首选。请改用mapreduce.map.resource.memory-mb。默认为1024。 |
mapreduce.map.resource.memory-mb | 将所有映射任务容器请求的内存设置为MB值。默认为1024。 |
mapreduce.map.cpu.vcores | 将所有映射任务容器请求的CPU设置为该值。不再是首选。请改用mapreduce.map.resource.vcores。默认为1。 |
mapreduce.map.resource.vcores | 将所有映射任务容器请求的CPU设置为该值。默认为1。 |
mapreduce.map.resource。<资源> | 将所有地图任务容器的<resource>的请求数量设置为该值。如果未指定单位,则假定资源的默认单位。请参阅上面有关单位的部分。 |
mapreduce.reduce.memory.mb | 将所有reduce任务容器请求的内存设置为以MB为单位的值。不再是首选。请改用mapreduce.reduce.resource.memory-mb。默认为1024。 |
mapreduce.reduce.resource.memory | 将所有reduce任务容器请求的内存设置为以MB为单位的值。不再是首选。请改用mapreduce.reduce.resource.memory-mb。默认为1024。 |
mapreduce.reduce.resource.memory-mb | 将所有reduce任务容器请求的内存设置为以MB为单位的值。默认为1024。 |
mapreduce.reduce.cpu.vcores | 将所有reduce任务容器请求的CPU设置为该值。不再是首选。请改用mapreduce.reduce.resource.vcores。默认为1。 |
mapreduce.reduce.resource.vcores | 将所有reduce任务容器请求的CPU设置为该值。默认为1。 |
mapreduce.reduce.resource。<资源> | 将所有缩减任务容器的<resource>的请求数量设置为该值。如果未指定单位,则假定资源的默认单位。请参阅上面有关单位的部分。 |
请注意,YARN可以修改这些资源请求,以满足配置的最小和最大资源值,或者是配置的增量的倍数。请参见yarn.scheduler.maximum-allocation-mb,yarn.scheduler.minimum-allocation-mb,yarn.scheduler.increment-allocation-mb,yarn.scheduler.maximum-allocation-vcore,yarn.scheduler.minimum-allocation- YARN调度程序配置中的vcores和yarn.scheduler.increment-allocation-vcores属性。
资源配置文件为用户提供了一种使用单个配置文件请求一组资源的简便方法,并为管理员提供了一种管理消耗资源的方式。
要配置资源类型,管理员必须在资源管理器的yarn-site.xml文件中将yarn.resourcemanager.resource-profiles.enabled设置为true。该文件定义了受支持的配置文件。例如:
{ “小”:{ “ memory-mb”:1024, “ vcores”:1 }, “默认”:{ “ memory-mb”:2048, “ vcores”:2 }, “大” : { “ memory-mb”:4096, “ vcores”:4 }, “计算”:{ “ memory-mb”:2048, “ vcores”:2 “ gpu”:1 } }
在此示例中,用户可以访问具有不同资源设置的四个配置文件。请注意,在计算配置文件中,管理员已如上所述配置了其他资源。