1.yarn内存调优
yarn.nodemanager.resource.memory-mb
可以分配给容器的物理内存(以MB为单位)。如果设置为-1,并yarn.nodemanager.resource.detect-hardware- capability为真,则自动计算(在Windows和Linux中)。在其他情况下,默认值是8192MB。
yarn.scheduler.minimum-allocation-mb 分配给容器的最小内存大小默认为1024MB
yarn.scheduler.maximum-allocation-mb 分配给容器的最大内存大小默认为8192MB
2.yarnCPU调优
yarn.nodemanager.resource.cpu-vcores
可以分配给容器的vcore数量。这是RM调度程序在为容器分配资源时使用的。这并不用于限制yarn容器使用的cpu数量。如果将其设置为-1,并且yarn.nodemanager.resource.detect-hardware- capability为真,则在Windows和Linux中,将从硬件自动确定它。在其他情况下,vcore的数量默认为8。
yarn.scheduler.minimum-allocation-vcores 分配给容器的最小vcore数量为1
yarn.scheduler.maximum-allocation-vcores 分配给容器的最大vcore数量为4
3案例
如果一台服务器的内存大小为64G 16c ,请问资源最大利用怎么分配?
首先,一台64G的服务器安装好之后,差不多会使用2G分配各系统,实际可用内存为62G,系统不会消耗CUP,所以CPU的核数还是16c。我们一般将15%-20%的内存剩余给系统,以防内存消耗完,会触发OOM机制。从系统剩余的内存中,分配4G给我们的datanode,分配1G给我们的nodemanager。
剩余的50G,可以这样分配。
yarn.nodemanager.resource.memory-mb 50G
yarn.nodemanager.resource.cpu-vcores 32c 我们将一核虚拟化成2个vcore
yarn.scheduler.minimum-allocation-mb 2G 根据业务设置
yarn.scheduler.minimum-allocation-vcores 2c 根据业务设置
yarn.scheduler.maximum-allocation-mb 8G 根据业务设置
yarn.scheduler.maximum-allocation-vcores 4c 这个值可以确定,经过clouder公司测试,vcores在小于5的时候,性能是最佳的。