MapReduce On YARN的资源申请
博客专区 > cheyo 的博客 > 博客详情
MapReduce On YARN的资源申请
cheyo 发表于6个月前
MapReduce On YARN的资源申请
  • 发表于 6个月前
  • 阅读 7
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

MapReduce On YARN的资源申请

MapReduce资源分配原理

MapReduce所需要的资源包含三类:

  1. mapper task所需要的资源
  2. reducer task所需的资源
  3. Job Tracker(AM)所需要的资源
  • mapper

mapper的数量由输入的splits个数决定.有几个split就有几个mapper.默认情况下,MapReudce根据输入文件的数量和HDFS块大小决定split个数.对于每一个输入文件,根据HDFS块大小,每一个HDFS块作为一个split.对于每一个文件,不足一个HDFS块的剩余部分也对应一个split.

MapReduce的split大小受mapreduce.input.fileinputformat.split.minsizemapreduce.input.fileinputformat.split.minsize约束.通过调高这两个参数,可以改变split的数量.比如可以将这两个参数改为512MB.那么,每512MB输入将对应一个Mapper.

单个mapper所需的CPU由参数mapreduce.map.cpu.vcores控制,默认为1个核.内存由参数mapreduce.map.memory.mb控制,默认为1G.

因为每一个mapper对应一个YARN的Container.YARN的Container有最小和最大资源约束:

yarn.scheduler.minimum-allocation-mb yarn.scheduler.maximum-allocation-mb yarn.scheduler.maximum-allocation-vcores yarn.scheduler.minimum-allocation-vcores

除MapReduce自动计算Mapper数量外,也可以通过程序指定Mapper数量.但指定mapper数量需要满足最终一个mapper不能对应两个输入文件的原则.即,指定的数量要大于MR自动计算出来的数量.

  • reducer

reducer的数量由程序员指定.根据经验,数量应该设置为**<TODO>**.

与mapper类似,每一个reducer的资源由由参数mapreduce.reduce.cpu.vcores控制,默认为1个核.内存由参数mapreduce.reduce.memory.mb控制

  • Job Tracker

AM只有一个,CPU和内存分别通过如下参数控制.

yarn.app.mapreduce.am.resource.cpu-vcores yarn.app.mapreduce.am.resource.mb

mapreduce-parameter

参考文档

共有 人打赏支持
粉丝 1
博文 1
码字总数 444
×
cheyo
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: