更新时间:2024-11-29 GMT+08:00

配置AM自动调整分配内存

配置场景

启动该配置的过程中,ApplicationMaster在创建container时,分配的内存会根据任务总数的浮动自动调整,资源利用更加灵活,提高了客户端应用运行的容错性。

配置描述

参数入口:

在Manager系统中,选择“集群 > 服务 > Yarn > 配置”,选择“全部配置”,在搜索框中输入参数名称“mapreduce.job.am.memory.policy”。

配置说明:

配置项的默认值为空,此时不会启动自动调整的策略,ApplicationMaster的内存仍受“yarn.app.mapreduce.am.resource.mb”配置项的影响。

配置参数的值由5个数值组成,中间使用“:”与“,”分隔,格式为:baseTaskCount:taskStep:memoryStep,minMemory:maxMemory,在键入时会严格校验格式。

表1 配置数值说明

数值名称

描述

设定要求

baseTaskCount

任务总量基数,只有当应用的task总数(map端与reduce端之和)不小于该值时配置才会起作用

不能为空且大于零

taskStep

任务增量步进,与memoryStep共同决定内存调整量

不能为空且大于零

memoryStep

内存增量步进,在"yarn.app.mapreduce.am.resource.mb"配置的基础上对内存向上调整

不能为空且大于零,单位:MB

minMemory

内存自动调整下限,若调整后的内存不大于该值,仍保持"yarn.app.mapreduce.am.resource.mb"的配置

不能为空且大于零,且不大于maxMemory的设定值

单位:MB

maxMemory

内存自动调整上限,若调整后的内存超过该值,则使用该值作为最终调整值

不能为空且大于零,且不小于minMemory的设定值

单位:MB

配置示例

配置情况:

  • yarn.app.mapreduce.am.resource.mb=1536
  • mapreduce.job.am.memory.policy=100:10:50,1200:2000
  • 某应用task总数=120

计算过程:

调整后内存=1536+[(120-100)/10]*50=1636,满足1200<1636且2000>1636,最终ApplicationMaster内存会设定为1636MB。

若memStep修改为250,调整后内存=1536+[(120-100)/10]*250=2136,超过maxMemory=2000的限制,最终ApplicationMaster内存会设定为2000MB。

对于计算后的调整值低于设定的“minMemory”值的情形,虽然此时配置不会生效但后台仍然会打印出这个调整值,用于为用户提供“minMemory”参数调整的依据,保证配置可以生效。