Hadoop3.2.0 YARN资源配置
概观YARN支持可扩展的资源模型。默认情况下,YARN会跟踪所有节点,应用程序和队列的CPU和内存,但资源定义可以扩展为包含任意“countable”资源。可数资源是在容器运行时消耗的资源,但之后会释放。CPU和内存都是可数资源。其他示例包括GPU资源和软件许可证。此外,YARN还支持使用“resource profiles”,允许用户通过单个配置文件指定多个资源请求,类似于Amazon ...
概观
YARN支持可扩展的资源模型。默认情况下,YARN会跟踪所有节点,应用程序和队列的CPU和内存,但资源定义可以扩展为包含任意“countable”资源。可数资源是在容器运行时消耗的资源,但之后会释放。CPU和内存都是可数资源。其他示例包括GPU资源和软件许可证。
此外,YARN还支持使用“resource profiles”,允许用户通过单个配置文件指定多个资源请求,类似于Amazon Web Services Elastic Compute Cluster实例类型。例如,“large”可能意味着8个虚拟内核和16GB RAM。
组态
支持以下配置属性。请参阅下文了解详情。
yarn-site.xml
配置属性 | 描述 |
---|---|
yarn.resourcemanager.resource-profiles.enabled | 指示是否启用资源配置文件支持。默认为false。 |
资源的types.xml
配置属性 | 描述 |
---|---|
yarn.resource-types | 逗号分隔的附加资源列表。可能不包括内存,内存-mb或vcores |
yarn.resource-types.<resource>.units | 指定资源类型的默认单位 |
yarn.resource-types.<resource>.minimum-allocation | 指定资源类型的最小请求 |
yarn.resource-types.<resource>.maximum-allocation | 对指定资源类型的最大请求 |
节点resources.xml中
配置属性 | 描述 |
---|---|
yarn.nodemanager.resource-type.<resource> | 节点管理器中可用的指定资源的数量 |
请注意,如果使用了resource-types.xml和node-resources.xml文件,则还需要将它们放在与yarn-site.xml相同的配置目录中。或者,可以将属性放入yarn-site.xml文件中。
YARN资源模型
Resource Manager
资源管理器是跟踪集群中哪些资源的最终仲裁者。资源管理器从XML配置文件加载其资源定义。例如,要定义除CPU和内存之外的新资源,应配置以下属性:
<configuration>
<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>
</configuration>
有效的资源名称必须以字母开头,并且只包含字母,数字和以下任何内容: ‘.’, ‘_’, or ‘-’. 有效的资源名称也可以选择在名称空格后跟斜杠。有效的名称空间由以句点分隔的字母,数字和短划线组成。例如,以下是有效的资源名称:
- myresource
- my_resource
- My-Resource01
- com.acme/myresource
以下是无效资源名称的示例:
- 10myresource
- my resource
- com/acme/myresource
- $NS/myresource
- -none-/myresource
对于定义的每个新资源类型,可以添加可选的单元属性以设置资源类型的默认单位。有效值为:
该属性必须命名为yarn.resource-types.<resource>.units. 每个定义的资源也可以具有可选的最小和最大属性。属性必须命名为yarn.resource-types.<resource>.minimum-allocation 和yarn.resource-types.<resource>.maximum-allocation
所述yarn.resource-types 属性和任何单元,mimimum,或最大性能可以以通常的定义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>
Node Manager
每个节点管理器独立定义该节点可用的资源。资源定义是通过为每个可用资源设置属性来完成的。该属性必须命名为yarn.nodemanager.resource-type.<resource> ,并且可以放在通常的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>
请注意,用于这些资源的单位不需要与资源管理器持有的定义匹配。如果单位不匹配,资源管理器将自动进行转换。
使用MapReduce的资源
MapReduce从YARN请求三种不同类型的容器:master container, map containers, 和 reduce containers 。对于每种容器类型,都有一组相应的属性可用于设置所请求的资源。
在MapReduce中设置资源请求的属性是:
属性 | 描述 |
---|---|
yarn.app.mapreduce.am.resource.mb | 将应用程序主容器请求的内存设置为以MB为单位的值。不再是首选。请改用yarn.app.mapreduce.am.resource.memory-mb。默认为1536。 即 1.5G |
yarn.app.mapreduce.am.resource.memory | 将应用程序主容器请求的内存设置为以MB为单位的值。不再是首选。请改用yarn.app.mapreduce.am.resource.memory-mb。默认为1536。 即 1.5G |
yarn.app.mapreduce.am.resource.memory-mb | 将应用程序主容器请求的内存设置为以MB为单位的值。默认为1536。 即 1.5G |
yarn.app.mapreduce.am.resource.cpu-vcores | 将应用程序主容器请求的CPU设置为该值。不再是首选。请改用yarn.app.mapreduce.am.resource.vcores。默认为1。 |
yarn.app.mapreduce.am.resource.vcores | 将应用程序 master container 请求的CPU设置为该值。默认为1。 |
yarn.app.mapreduce.am.resource <resource> | 将应用程序 master container 的<resource>请求的数量设置为该值。如果未指定单位,则假定资源的默认单位。请参阅上面的单位部分。 |
mapreduce.map.memory.mb | 将所有 map task containers 请求的内存设置为以MB为单位的值。不再是首选。请改用mapreduce.map.resource.memory-mb。默认为1024。 |
mapreduce.map.resource.memory | 将所有 map 任务容器请求的内存设置为以MB为单位的值。不再是首选。请改用mapreduce.map.resource.memory-mb。默认为1024。 |
mapreduce.map.resource.memory-mb | 将所有 map master container 请求的内存设置为以MB为单位的值。默认为1024。 |
mapreduce.map.cpu.vcores | 将所有 map master container 请求的CPU设置为该值。不再是首选。请改用mapreduce.map.resource.vcores。默认为1。 |
mapreduce.map.resource.vcores | 将所有映射 map master container 请求的CPU设置为该值。默认为1。 |
mapreduce.map.resource <resource> | 将所有 map master container 的<resource>请求的数量设置为该值。如果未指定单位,则假定资源的默认单位。请参阅上面的单位部分。 |
mapreduce.reduce.memory.mb | 将所有reduce task container 请求的内存设置为以MB为单位的值。不再是首选。请改用mapreduce.reduce.resource.memory-mb。默认为1024。 |
mapreduce.reduce.resource.memory | 将所有reduce task container 请求的内存设置为以MB为单位的值。不再是首选。请改用mapreduce.reduce.resource.memory-mb。默认为1024。 |
mapreduce.reduce.resource.memory-mb | 将所有educe task container请求的内存设置为以MB为单位的值。默认为1024。 |
mapreduce.reduce.cpu.vcores | 将所有reduce task container请求的CPU设置为该值。不再是首选。请改用mapreduce.reduce.resource.vcores。默认为1。 |
mapreduce.reduce.resource.vcores | 将所有educe task container请求的CPU设置为该值。默认为1。 |
mapreduce.reduce.resource <resource> | 将所有educe task container 的<resource>请求的数量设置为该值。如果未指定单位,则假定资源的默认单位。请参阅上面的单位部分。 |
请注意,YARN可以修改这些资源请求以满足配置的最小和最大资源值,或者是配置增量的倍数。参见yarn.scheduler.maximum-allocation-mb,yarn.scheduler.minimum-allocation-mb,yarn.scheduler.increment-allocation-mb,yarn.scheduler.maximum-allocation-vcores,yarn.scheduler.minimum-allocation-vcores 和 yarn.scheduler.increment-allocation-vcores 在YARN scheduler configuration 属性。
资源配置文件
资源配置文件为用户提供了一种简单的方法,可以使用单个配置文件请求一组资源,以及管理员管理资源使用方式的方法。
要配置资源类型,管理员必须在资源管理器的yarn-site.xml文件中设置yarn.resourcemanager.resource-profiles.enabled ot true。此文件定义支持的配置文件。例如:
{
"small": {
"memory-mb" : 1024,
"vcores" : 1
},
"default" : {
"memory-mb" : 2048,
"vcores" : 2
},
"large" : {
"memory-mb": 4096,
"vcores" : 4
},
"compute" : {
"memory-mb" : 2048,
"vcores" : 2,
"gpu" : 1
}
}
在此示例中,用户可以访问具有不同资源设置的四个配置文件。请注意,在计算配置文件中,管理员已配置了如上所述的其他资源。
请求个人资料
分布式shell是目前唯一支持资源配置文件的客户端。使用分布式shell,用户可以指定资源配置文件名称,该名称将自动转换为适当的资源请求集。
例如:
hadoop job $DISTSHELL -jar $DISTSHELL -shell_command run.sh -container_resource_profile small
原文链接: https://hadoop.apache.org/docs/r3.2.0/
更多推荐
所有评论(0)