Yarn的生产资源管理
假设一台机器有48G物理内存 ,8core (按照1:2的一般配置)虚拟core(vcore)有 16个
1)Linux系统本身要占内存+空留:20% ----》 48*0.2=9.6G
剩余:80% = 38.4G
2)DN进程(datanode):生产4G
更改datanode的配置(hadoop-env.sh)
HADOOP_NAMENODE_OPTS=-Xmx1024m
HADOOP_DATANODE_OPTS=-Xmx1024m
3)NM进程:4G
更改NodeManager的配置(yarn-env.sh)
export YARN_RESOURCEMANAGER_HEAPSIZE=1024
export YARN_NODEMANAGER_HEAPSIZE=1024
因此,机器还剩 38.4-4-4 =30.8G (近似30G)
dn和nm一般部署在同一台机器:数据本地化
对于物理内存:
yarn.nodemanager.resource.memory-mb 30*1024 30G
默认配置
yarn.scheduler.minimum-allocation-mb 1024 1G
yarn.scheduler.maximum-allocation-mb 8192 8G
因此,container的个数为:
3(30/8)个 ~30(30/1) 个
生产1:
yarn.nodemanager.resource.memory-mb 30G
yarn.scheduler.minimum-allocation-mb 2G
yarn.scheduler.maximum-allocation-mb 30G
container个数: 1个~15个
生产2:
yarn.nodemanager.resource.memory-mb 32G (从系统借的,系统占用的空间就小于20%)
yarn.scheduler.minimum-allocation-mb 2G
yarn.scheduler.maximum-allocation-mb 8G
container个数:4个~16个
对于CPU:
yarn.nodemanager.resource.cpu-vcores 12
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 4
container:
3个~12个
在生产中,要合理配置物理内存和CPU虚拟核的参数,避免出现资源浪费。