YARN的调优参数
一.Container概念
Container我个人理解成一块虚拟的空间,是由menory和vcore一起组成的
vcore这个概念是由yarn提出来的,为了防止在一个集群里面的各个机器的core性能不一致才提出这个概念,这指的是一个虚拟化的core,如果在同一个集群里面一台机器的CPU处理性能很好,但是在整个集群里面还有一台机器的CPU处理性能一般,这样可以通过yarn.nodemanager.vmem-pmem-ratio这个参数设置的,默认是2.1,可以把性能好的机器设置成2.1,性能差一点的机器设置成1.1
二.关于Container调优案例
1.假设生产环境下我的memory是256G,而且我的物理core是32,假设物理core和vore的比例是1:2
2.假设我装的是contos系统使用了1Gmemory,Linux有个机制,会预设15%-20%的内存,默认是先锁住,不可以使用,这是为了防止系统夯住,或者OOM机制事件
3.去掉这个机器上面使用的进程内存,假设只有dn,dn在生产上默认改成2G
4.那我剩下的可使用的内存是256-1-256*0.2-2=201.8,四舍五入202G
此时这台机器上面就剩下202G memory和64个vore
5.参考官方文档,发现官方yarn.scheduler.maximum-allocation-vcores这个参数给的是4,说明每个Container容器最好是4个vcore,那么我们就会有16个Container,再进行修改每个Container里面的memory参数
yarn.nodemanager.resource.memory-mb 200G 最大可以使用的memory大小
yarn.scheduler.minimum-allocation-mb 1G 每个Container最小的memory
yarn.scheduler.maximum-allocation-mb 12G 每个Container最大的memory
修改vore参数:
yarn.nodemanager.resource.cpu-vcores 64 最大可以使用的vore数量
yarn.scheduler.minimum-allocation-vcores 1 每个Container最少使用的vore数量 (默认)
yarn.scheduler.maximum-allocation-vcores 4 每个Container最大可以使用的vore数量 (默认)