yarn 内存与CPU参数设置
每个job提交到yarn上执行时,都会分配Container容器去运行,而这个容器需要资源才能运行,这个资源就是Cpu和内存。1、CPU资源调度目前的CPU被Yarn划分为虚拟CPU,这是yarn自己引入的概念,因为每个服务器的Cpu计算能力不一样,有的机器可能是 其他机器的计算能力的2倍,然后可以通过多配置几个虚拟内存弥补差异。在yarn中,cpu的相关配置如下。yarn.nodemanager
每个job提交到yarn上执行时,都会分配Container
容器去运行,而这个容器需要资源才能运行,这个资源就是Cpu和内存
。
1、CPU资源调度
目前的CPU被Yarn划分为虚拟CPU
,这是yarn自己引入的概念,因为每个服务器的Cpu计算能力不一样,有的机器可能是 其他机器的计算能力的2倍,然后可以通过多配置几个虚拟内存弥补差异。
Yarn累计可用核数
在yarn中,cpu的相关配置如下。
yarn.nodemanager.resource.cpu-vcores
表示该节点服务器上yarn可以使用的虚拟的CPU个数,默认是8
如果节点CPU的核心个数不足8个,需要调小这个值,yarn不会智能的去检测物理核数。如果机器性能较好,可以配置为物理核数的2倍。
单个任务可以申请的核数
yarn.scheduler.minimum-allocation-vcores
表示单个任务最小可以申请的虚拟核心数,默认为1
yarn.sheduler.maximum-allocation-vcores
表示单个任务最大可以申请的虚拟核数,默认为4;如果申请资源时,超过这个配置,会抛出 InvalidResourceRequestException
2、Memory资源调度
Yarn累计可用内存
yarn一般允许用户配置每个节点上可用的物理资源,可用指的是将机器上内存减去hdfs的,hbase的等等剩下的可用的内存。
yarn.nodemanager.resource.memory-mb
设置该节点上yarn可使用的内存,默认为8G,如果节点内存不足8G,要减少这个值,yarn不会智能的去检测内存资源,一般这个值式yarn的可用内存资源。
单个任务可以申请的内存
yarn.scheduler.minmum-allocation-mb
单个任务最小申请物理内存量,默认是1024M
,根据自己业务设定
yarn.scheduler.maximum-allocation-mb
单个任务最大可以申请的物理内存量,默认为8291M
举例说明
如果一个服务器是32核
,虚拟后为64核,128G
内存,我们该如何设置上面的6个参数呢?即如何做到资源最大化利用
生产上我们一般要预留15-20%的内存,那么可用内存就是128*0.8=102.4G,去除其他组件的使用,我们设置成90G
就可以了。
就是说,yarn
总可用资源是64核,90G
设置单个任务可用的最大及最小核数
1、yarn.sheduler.maximum-allocation-vcores
一般就设置成4个,cloudera公司做过性能测试,如果CPU大于等于5之后,CPU的利用率反而不是很好。这个参数可以根据生成服务器决定,比如公司服务器很富裕,那就直接设置成1:1;设置成32,如果不是很富裕,可以直接设置成1:2。我们以1:2来计算。
2、yarn.scheduler.minimum-allocation-vcores
如果设置vcoure = 1,那么最大可以跑64/1=64个container,如果设置成这样,最小container是64/4=16个。
设置单个任务可用的最大及最小内存
yarn.scheduler.minmum-allocation-mb
默认是1G,如果设置成2G,那么90/2=45最多可以跑45个container,如果设置成4G,那么最多可以跑24个;vcore有些浪费。
yarn.scheduler.maximum-allocation-mb
默认8G
总结
一台物理主机,除去系统需要的core及内存,剩下的就是yarn可用的CPU及内存,然后还可以进一步设置单个任务可以使用的最大Vcore,最小Vcore,最大内存以及最小内存等等
参考
更多推荐
所有评论(0)