配置AM自动调整分配内存
配置场景
启动该配置的过程中,ApplicationMaster在创建container时,分配的内存会根据任务总数的浮动自动调整,资源利用更加灵活,提高了客户端应用运行的容错性。
配置描述
参数入口:
在Manager系统中,选择“集群 > 服务 > Yarn > 配置”,选择“全部配置”,在搜索框中输入参数名称“mapreduce.job.am.memory.policy”。
配置说明:
配置项的默认值为空,此时不会启动自动调整的策略,ApplicationMaster的内存仍受“yarn.app.mapreduce.am.resource.mb”配置项的影响。
配置参数的值由5个数值组成,中间使用“:”与“,”分隔,格式为:baseTaskCount:taskStep:memoryStep,minMemory:maxMemory,在键入时会严格校验格式。
数值名称 |
描述 |
设定要求 |
---|---|---|
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”参数调整的依据,保证配置可以生效。