生产环境调优YARN Container参数

     Container是nodemanager虚拟出来的容器,用来运行task任务的,调优维度是memory+vcore

 

如何优化Container参数??假设128G,16个物理core的服务器

1、装完Centos,消耗内存1G

2、系统预留15%-20%内存(大概26G,其中包含Centos系统占用的1G内存),用来防止全部使用导致系统夯住和oom机制,或者给未来部署组件预留点空间。

3、假设该服务器上只有DataNode,NodeManager节点,余下内存128G-26G=102G

    1)DataNode大概分配2G

    2)NodeManager分配4G

    3)Container内存分配

减掉DataNode和NodeManger,还剩余102G-2G-4G=96G,极限情况下服务器剩下的内存全部分给nodemanager:96G

配置参数:

     yarn.nodemanager.resource.memory-mb=96G

    最大分配内存和最小分配内存
    yarn.scheduler.maximum-allocation-mb=96G,极限情况下,只有1个container,内存96G
    yarn.scheduler.minimum-allocation-mb=1G,极限情况下,只有96个container,每个内存1G

其中contanier的内存会自动增加,默认是1G的递增,contanier的数量是1-96个。

     4)Contanier虚拟核:

    默认服务器物理核和虚拟核的比例是1:2,16个物理core的服务器也就是拥有32虚拟核32vcore

1:2的配置参数:

  yarn.nodemanager.resource.pcores-vcores-multiplier=2

极限情况下物理核全部分给nodemanager,也就是32Vcore,配置参数:

yarn.nodemanager.resource.cpu-vcores=32

分配vcore和最大分配vcore配置:

yarn.scheduler.minimum-allocation-vcores=1,极限情况下,只有32个container,
yarn.scheduler.maximum-allocation-vcores=32,极限情况下,只有1个container,

     所以container数量是1-32个。

官方建议,cloudera公司推荐,一个container的vcore最好不要超过5,那么设置4,所以极限情况下,32/4=8,只有8个container

yarn.scheduler.maximum-allocation-vcores=4

综合memory+vcore计算确定vocre=4,container为8个,内存分配

yarn.nodemanager.resource.memory-mb=96G
yarn.scheduler.minimum-allocation-mb=1G
yarn.scheduler.maximum-allocation-mb=12G
极限情况下8个container,96G/8=12G

不过当spark计算时内存不够大,这个参数肯定要调大,那么这种理想化的设置个数必然要打破,以memory为主(但是正常情况下12G是够用了),

根据内存设置参数
yarn.nodemanager.resource.memory-mb =96G
yarn.scheduler.minimum-allocation-mb=1G
yarn.scheduler.maximum-allocation-mb=8G
就是12个container ,vcore为12*2=24
根据vocre设置参数
yarn.nodemanager.resource.cpu-vcores =32
yarn.scheduler.minimum-allocation-vcores =1
yarn.scheduler.maximum-allocation-vcores =2

16 个container,内存占用168g=128G超过resource资源的总内存,所以根据内存为主导设置参数
vcore是yarn自己引入的,设计初衷是考虑不同节点的CPU的性能不一样,每个CPU的计算能力不一样。比如某个物理CPU是另外一个物理CPU的2倍,这时通过设置第一个物理CPU的虚拟core来弥补这种差异(当期节点的xml去设置该参数),不过一般不会存在这种问题,因为选机器不可能选不一样的。


例如:

  1. 假如 256G内存 56core,请问参数如何设置?
    256*20%=25.6G ==52G,剩余256-52-2-4=198G
    yarn.nodemanager.resource.memory-mb=198G
    yarn.scheduler.minimum-allocation-mb=1G
    yarn.scheduler.maximum-allocation-mb=7G
    28个container 28
    7G=196G
    yarn.nodemanager.resource.cpu-vcores=112
    yarn.scheduler.minimum-allocation-vcores=1
    yarn.scheduler.maximum-allocation-vcores=4
  2. 加入该节点还有其他的组件,比如hbase和regionserver进程,那么该如何设置
    hbase regionserver占用内存30G,nodemanager这种内存:96G-30G=66G

生产配置:yarn-site.xml

	<property>
		<name>yarn.nodemanager.resource.memory-mb</name>
		<value>2048</value>
	</property>
	<property>
		<name>yarn.scheduler.minimum-allocation-mb</name>
		<value>1024</value>
		<discription>单个任务可申请最少内存,默认1024MB</discription>
	 </property>

  
  <property>
	<name>yarn.scheduler.maximum-allocation-mb</name>
	<value>2048</value>
	<discription>单个任务可申请最大内存,默认8192MB</discription>
  </property>

   <property>
       <name>yarn.nodemanager.resource.cpu-vcores</name>
       <value>2</value>
    </property>

--------------------------

      用人品去感动别人,用行动去带动别人,用阳光去照耀别人,用坚持去赢得别人,要求自己每天都去做与目标有关的事情,哪怕每天只进步一点点,坚持下来你就是最优秀卓越的!欢迎大家加入大数据qq交流群:725967421     一起交流,一起进步!!
--------------------------
 

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值