生产环境调优Container参数

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
    DataNode大概分配2G,NodeManager分配4G,剩余102G-2G-4G=96G
    Container内存分配:
    极限情况下服务器剩下的内存全部分给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个
    Contanier虚拟核: 默认服务器物理核和虚拟核的比例是1:2,也就是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,所以
    yarn.scheduler.maximum-allocation-vcores=4,极限情况下,32/4=8,只有8个container
    综合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,内存占用16*8g=128G超过resource资源的总内存,所以根据内存为主导设置参数
    vcore是yarn自己引入的,设计初衷是考虑不同节点的CPU的性能不一样,每个CPU的计算能力不一样。比如某个物理CPU是另外一个物理CPU的2倍,这时通过设置第一个物理CPU的虚拟core来弥补这种差异(当期节点的xml去设置该参数),不过一般不会存在这种问题,因为选机器不可能选不一样的。
  4. 假如 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
  5. 加入该节点还有其他的组件,比如hbase和regionserver进程,那么该如何设置
    hbase regionserver占用内存30G,nodemanager这种内存:96G-30G=66G

调度器

  1. FIFO先进先出
    在这里插入图片描述
  2. Capacity计算,有一个专门的队列来运行小任务,但是为了小任务专门设置一个队列预先占用一定的集群资源。这就会导致岛任务执行时间落后于FIFO的调度时间
    在这里插入图片描述
  3. Fair公平,job1提交的时候,使用资源是100%;这个时候提交job2,job2就在等,等job1也就是某个container容器的task运行完毕,释放内存,这个时候job2就会使用这部分内存去运行;当job2运行完毕,这个时候就会把资源再次还回去;不会计算调度那样浪费资源
    在这里插入图片描述
    CDH默认是Fair,Apache默认是capacity

常用hadoop命令和yarn命令

yarn jar
hadoop jar
yarn application -kill 用于杀死夯住的进程

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值