MapReduce On YARN的资源申请

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

参考文档

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

List的Select 和Select().tolist()

List<PersondelpnewList<Person{newPerson{Id1,Name"小明1",Age11,Sign0},newPerson{Id2,Name"小明2",Age12,