Hadoop - container on yarn

Hadoop - container on yarn

  • hadoop 2.x版本的mapreduce任务都提交到yarn框架执行
  • container
    • 定义:将一定的内存和CPU,如4G内存,1个vcore抽象成一个container
    • 任务都是运行在container里
    • vcore:虚拟核数,一般是机器实际core的2倍
  • yarn参数配置细节

假定机器配置为64G,16core

  • linux的保护机制为了防止oom,我们预留2G,剩余可分配62G

  • 为了能流畅的运行(满负荷会很卡),我们再预留15~20%的内存,剩余可分配62*0.8=49.6G

    • 为了任务能快速运行,我们需要把DataNode和NodeManager部署在一台机器(如果不是同一台,当任务进行时还需要去DataNode去拿数据),我们可以分配给DN 4G,NM 1G
    • 剩余的留给系统
  • 针对49.6G的计算资源,我们应该怎么分配container的资源呢,先看一下yarn的几个参数

    参数名称参数含义默认值
    yarn.nodemanager.resource.memory-mbnodemanger管理的资源总资源(用于计算的,也就是上面的49.6G)-1
    yarn.scheduler.minimum-allocation-mb每个container可分配的最小内存,默认1G1024
    yarn.scheduler.maximum-allocation-mb每个container可分配的最大内存,默认8G8192
    1. 假设我们使用默认配置,那么最大的container个数=49.6G/1G=49个,最少的container个数=49.6G/8G=6个,但是我们的cpu核数只有16核,所以container只能在6~16范围,所以当任务为1G时,最大才能分配16个container,使用16G,内存很浪费,需要优化
    2. 为了能最大利用资源,yarn引入vcore的概念。cpu划分成虚拟cpu,初衷是不同的节点的cpu性能可能不同,每个cpu具有计算能力也不一样,某一个物理cpu的计算能力可能是另一个物理cpu的2倍,当提交任务时,可为第一个cpu多配置几个虚拟cpu以弥补差异,当任务需要的资源多时,就多分配几个虚拟cpu。在引入vcore之后,我们看下yarn的另外几个参数
    参数名参数含义参数值
    yarn.nodemanager.resource.cpu-vcores该节点上YARN可使用的虚拟CPU个数8
    yarn.scheduler.minimum-allocation-vcores单个任务可申请的最小虚拟CPU个数,默认是11
    yarn.scheduler.maximum-allocation-vcores单个任务可申请的最多虚拟CPU个数,默认是3232

    引入vcore之后,我们重新来捋一捋思路

    可用计算49G内存,12核(因为其他程序还要用几个核),vcores=24

    先假定单个任务申请的最小虚拟cpu=2(yarn.scheduler.minimum-allocation-vcores=2)

    那么最多可以申请24/2=12container,那么每个container的最小内存为49/12=4G(yarn.scheduler.minimum-allocation-mb=4G)

    再有,每个任务申请的虚拟cpu个数经验值为4vcore,那么最少可以分配24vcore/4vcore=6

    那么每个container最大可用内存为49/6=8G

    所以可以配置参数为

    yarn.scheduler.minimum-allocation-vcores=2

    yarn.scheduler.minimum-allocation-mb=4G

    yarn.scheduler.maximum-allocation-vcores=4

    yarn.scheduler.maximum-allocation-mb=8G


  • 总结:

    container的内存分配,主要基于两个经验值

    1. 可用于计算的cpu的80%
    2. 每个任务的合理的最大vcore=4

    新手理解,有不同的看法可以留言


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值