yarn内存配置指南
2016-05-20 22:45
519 查看
yarn中需要很多内存配置,本文只给一些推荐和建议,实际还根据具体业务逻辑来定
首先,需要明确,yarn中,整个集群的资源需要内存、硬盘、CPU(CPU核数)三者来决定,必须要实现三者的均衡,在实际生产环境中,硬盘都是足够大的,所以很少考虑硬盘,这里暂时也把硬盘作为一个要素作为参考项。
在计算节点可用内存的时候,需要考虑操作系统系统的内存需求、NM的内存需求以及该节点其他系统的内存需求(比如Hbase,下面均以Hbase为例),
因此yarn可用内存=系统总内存-为操作系统保留内存-为Hbase保留内存
操作系统和Hbase内存参考值如下
那么,每个节点最大的Containers数可以通过如下公式计算
Containers=min(2*CPU,1.8DISKS,(yarn可用内存)/每个Container最小内存)
每个container最小内存又依赖于yarn可用内存,最小内存的和可用内存关系如下:
根据上面这些参考值和计算公式,可以计算出节点的Container个数,那么每个Container可使用的内存可以通过如下公式求得
每个Container内存=max(container最小内存,yarn可用内存/container个数)
通过上面的计算,YARN和MR的内存推荐配置如下:
同时HDP为了简化计算,还发行了一个Python脚本yarn-util.py,该脚本有四个参数
例如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
首先,需要明确,yarn中,整个集群的资源需要内存、硬盘、CPU(CPU核数)三者来决定,必须要实现三者的均衡,在实际生产环境中,硬盘都是足够大的,所以很少考虑硬盘,这里暂时也把硬盘作为一个要素作为参考项。
在计算节点可用内存的时候,需要考虑操作系统系统的内存需求、NM的内存需求以及该节点其他系统的内存需求(比如Hbase,下面均以Hbase为例),
因此yarn可用内存=系统总内存-为操作系统保留内存-为Hbase保留内存
操作系统和Hbase内存参考值如下
节点总内存 | 操作系统预留的内存 | Hbase预留的内存 |
4 GB | 1 GB | 1 GB |
8 GB | 2 GB | 1 GB |
16 GB | 2 GB | 2 GB |
24 GB | 4 GB | 4 GB |
48 GB | 6 GB | 8 GB |
64 GB | 8 GB | 8 GB |
72 GB | 8 GB | 8 GB |
96 GB | 12 GB | 16 GB |
128 GB | 24 GB | 24 GB |
256 GB | 32 GB | 32 GB |
512 GB | 64 GB | 64 GB |
Containers=min(2*CPU,1.8DISKS,(yarn可用内存)/每个Container最小内存)
每个container最小内存又依赖于yarn可用内存,最小内存的和可用内存关系如下:
每个节点可用内存 | Container最小内存推荐值 |
Less than 4 GB | 256 MB |
Between 4 GB and 8 GB | 512 MB |
Between 8 GB and 24 GB | 1024 MB |
Above 24 GB | 2048 MB |
每个Container内存=max(container最小内存,yarn可用内存/container个数)
通过上面的计算,YARN和MR的内存推荐配置如下:
配置文件 | 配置项名称 | 配置项值 |
yarn-site.xml | yarn.nodemanager.resource.memory-mb | = Containers个数* 每个Container内存 |
yarn-site.xml | yarn.scheduler.minimum-allocation-mb | = 每个Container内存 |
yarn-site.xml | yarn.scheduler.maximum-allocation-mb | = Containers个数* 每个Container内存 |
mapred-site.xml | mapreduce.map.memory.mb | = 每个Container内存 |
mapred-site.xml | mapreduce.reduce.memory.mb | = 2 * 每个Container内存 |
mapred-site.xml | mapreduce.map.java.opts | = 0.8 * 每个Container内存 |
mapred-site.xml | mapreduce.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内存 |
参数 | 描述 |
-c CORES | 每个节点CPU核数 |
-m MEMORY | 每个节点内存总数(单位G) |
-d DISKS | 每个节点的硬盘个数 |
-k HBASE | 如果安装了Hbase则为True,否则为False |
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
相关文章推荐
- 给大家推荐对Redis分析讲解比较详细的大牛
- c++第六次上机作业
- html CSS 学习总结
- Preferences.java
- OpenWRT编译用于高通AR9561(2)
- 例题9-11 UVa1331 Minimax Triangulation(DP:最优三角剖分)
- Leetcode 200. Number of Islands
- Mac电脑使用出现的问题及解决办法
- CodeForces - 672C Recycling Bottles (贪心)
- 多线程编程 - NSOperation
- Python improve performance
- 单链表按k值重新排序
- HTTP代理的那些事儿
- sgi stl linux下编译运行
- 优化win2d实现的萤火虫粒子效果
- c++第6次作业
- MD语法
- 找硬币问题
- CSS 行内样式 页内样式 外部样式
- ARM指令集和单纯的RISC的区别