yarn内存配置指南

yarn中需要很多内存配置,本文只给一些推荐和建议,实际还根据具体业务逻辑来定

首先,需要明确,yarn中,整个集群的资源需要内存、硬盘、CPU(CPU核数)三者来决定,必须要实现三者的均衡,在实际生产环境中,硬盘都是足够大的,所以很少考虑硬盘,这里暂时也把硬盘作为一个要素作为参考项。

在计算节点可用内存的时候,需要考虑操作系统系统的内存需求、NM的内存需求以及该节点其他系统的内存需求(比如Hbase,下面均以Hbase为例),

因此yarn可用内存=系统总内存-为操作系统保留内存-为Hbase保留内存

操作系统和Hbase内存参考值如下

节点总内存操作系统预留的内存Hbase预留的内存
4 GB1 GB1 GB
8 GB2 GB1 GB
16 GB2 GB2 GB
24 GB4 GB4 GB
48 GB6 GB8 GB
64 GB8 GB8 GB
72 GB8 GB8 GB
96 GB12 GB16 GB
128 GB24 GB24 GB
256 GB32 GB32 GB
512 GB64 GB64 GB

那么,每个节点最大的Containers数可以通过如下公式计算

Containers=min(2*CPU,1.8DISKS,(yarn可用内存)/每个Container最小内存)

每个container最小内存又依赖于yarn可用内存,最小内存的和可用内存关系如下:

每个节点可用内存Container最小内存推荐值
Less than 4 GB256 MB
Between 4 GB and 8 GB512 MB
Between 8 GB and 24 GB1024 MB
Above 24 GB2048 MB

根据上面这些参考值和计算公式,可以计算出节点的Container个数,那么每个Container可使用的内存可以通过如下公式求得

每个Container内存=max(container最小内存,yarn可用内存/container个数)

通过上面的计算,YARN和MR的内存推荐配置如下:

配置文件配置项名称配置项值
yarn-site.xmlyarn.nodemanager.resource.memory-mb= Containers个数* 每个Container内存
yarn-site.xmlyarn.scheduler.minimum-allocation-mb= 每个Container内存
yarn-site.xmlyarn.scheduler.maximum-allocation-mb= Containers个数* 每个Container内存
mapred-site.xmlmapreduce.map.memory.mb= 每个Container内存
mapred-site.xmlmapreduce.reduce.memory.mb= 2 * 每个Container内存
mapred-site.xmlmapreduce.map.java.opts= 0.8 * 每个Container内存
mapred-site.xmlmapreduce.reduce.java.opts= 0.8 * 2 * 每个Container内存
yarn-site.xml (check)yarn.app.mapreduce.am.resource.mb= 2 * 每个Container内存
yarn-site.xml (check)yarn.app.mapreduce.am.command-opts= 0.8 * 2 * 每个Container内存

同时HDP为了简化计算,还发行了一个Python脚本yarn-util.py,该脚本有四个参数

参数描述
-c CORES每个节点CPU核数
-m MEMORY每个节点内存总数(单位G)
-d DISKS每个节点的硬盘个数
-k HBASE如果安装了Hbase则为True,否则为False

例如16核CPU、64G内存、4块硬盘,未安装Hbase的情况下,其计算推荐配置如下

Using cores=16 memory=64GB disks=4 hbase=False
 Profile: cores=16 memory=57344MB reserved=8GB usableMem=56GB disks=4
 Num Container=8
 Container Ram=7168MB
 Used Ram=56GB
 Unused Ram=8GB
 yarn.scheduler.minimum-allocation-mb=7168
 yarn.scheduler.maximum-allocation-mb=57344
 yarn.nodemanager.resource.memory-mb=57344
 mapreduce.map.memory.mb=7168
 mapreduce.map.Java.opts=-Xmx5734m
 mapreduce.reduce.memory.mb=7168
 mapreduce.reduce.java.opts=-Xmx5734m
 yarn.app.mapreduce.am.resource.mb=7168
 yarn.app.mapreduce.am.command-opts=-Xmx5734m
 mapreduce.task.io.sort.mb=2867


该脚本下载地址yarn-util.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值