(转)hadoop yarn 内存相关配置

1.YARN中处理能力的基本单元是什么?
2.什么是保留内存?
3.4到8G Container建议多少M?









在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源调度. YARN会管理集群中所有机器的可用计算资源. 基于这些资源YARN会调度应用(比如MapReduce)发来的资源请求, 然后YARN会通过分配Container来给每个应用提供处理能力, Container是YARN中处理能力的基本单元, 是对内存, CPU等的封装.




在Hadoop集群中,平衡内存(RAM)、处理器(CPU核心)和磁盘的使用是至关重要的,合理规划以免某一项引起瓶颈制约。一般的建议是,一块磁盘和一个CPU核心上配置两个Container会达到集群利用率的最佳平衡。


从可用的硬件资源角度看,要调整群集每个节点Yarn和MapReduce的内存配置到合适的数据,应注意以下几个重要的元素:

  • RAM (总内存大小)
  • CORES (CPU核心数)
  • DISKS (磁盘数)




Yarn和MapReduce的总的可用内存应考虑到保留的内存。保留的内存是由系统进程和其他Hadoop进程(如Hbase)所需要的内存。
保留内存=保留系统内存+保留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


下面的计算是确定每个节点的Container允许的最大数量。
#Container数量=min (2*CORES, 1.8*DISKS, (可用内存)/最低Container的大小)
最低Container的大小 这个值是依赖于可用的RAM数量——在较小的存储节点,最小的Container的大小也应较小。下面的表列出了推荐值:

每个节点的总内存建议的最低Container的大小
小于 4 GB256 MB
4 GB 到 8 GB512 MB
8 GB 到 24 GB1024 MB
24 GB 以上2048 MB


最后计算的每个Container的内存大小是:

每个Container的内存大小 = max(最小Container内存大小, (总可用内存) /Container数))

根据计算,YARN 和 MapReduce 配置如下:

配置文件配置项设置值
yarn-site.xmlyarn.nodemanager.resource.memory-mb= Container数量 * 每个Container的内存大小
yarn-site.xmlyarn.scheduler.minimum-allocation-mb= 每个Container的内存大小
yarn-site.xmlyarn.scheduler.maximum-allocation-mb= Container数量 * 每个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的内存大小



提醒: 安装完成后, yarn-site.xml 和 mapred-site.xml 的配置文件在安装目录的 /etc/hadoop/文件夹下.

例如:
集群的节点有 12 CPU cores, 48 GB RAM, and 12 磁盘.
预留内存= 6 GB 系统预留 + 8 GB HBase预留
最小Container内存大小 = 2 GB

如果不安装 HBase:
#Container数 = min (2*12, 1.8* 12, (48-6)/2) = min (24, 21.6, 21) = 21
每个Container的内存大小 = max (2, (48-6)/21) = max (2, 2) = 2

ConfigurationValue Calculation
yarn.nodemanager.resource.memory-mb= 21 * 2 = 42*1024 MB
yarn.scheduler.minimum-allocation-mb= 2*1024 MB
yarn.scheduler.maximum-allocation-mb= 21 * 2 = 42*1024 MB
mapreduce.map.memory.mb= 2*1024 MB
mapreduce.reduce.memory.mb= 2 * 2 = 4*1024 MB
mapreduce.map.java.opts= 0.8 * 2 = 1.6*1024 MB
mapreduce.reduce.java.opts= 0.8 * 2 * 2 = 3.2*1024 MB
yarn.app.mapreduce.am.resource.mb= 2 * 2 = 4*1024 MB
yarn.app.mapreduce.am.command-opts= 0.8 * 2 * 2 = 3.2*1024 MB


如果安装 Hbase:
#Container数 = min (2*12, 1.8* 12, (48-6-8)/2) = min (24, 21.6, 17) = 17
每个Container的内存大小 = max (2, (48-6-8)/17) = max (2, 2) = 2

配置项配置大小
yarn.nodemanager.resource.memory-mb= 17 * 2 = 34*1024 MB
yarn.scheduler.minimum-allocation-mb= 2*1024 MB
yarn.scheduler.maximum-allocation-mb= 17 * 2 = 34*1024 MB
mapreduce.map.memory.mb= 2*1024 MB
mapreduce.reduce.memory.mb= 2 * 2 = 4*1024 MB
mapreduce.map.java.opts= 0.8 * 2 = 1.6*1024 MB
mapreduce.reduce.java.opts= 0.8 * 2 * 2 = 3.2*1024 MB
yarn.app.mapreduce.am.resource.mb= 2 * 2 = 4*1024 MB
yarn.app.mapreduce.am.command-opts= 0.8 * 2 * 2 = 3.2*1024 MB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值