概观

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/

​​​​​​​

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐