mapreduce分片

  我们编写的mapreduce程序,也即Job,当它被提交到云计算平台以后,根据输入文件的大小,mapreduce框架会创建若干个map任务,map任务的数量有分片(split)的个数决定,那么待处理的数据会被划分成几个split呢,很明显,这是有split的大小决定的,下面让我们来看一下split大小的计算方法(摘自高清元的微博:http://weibo.com/576203331)。

  splitSize=max(minSize,min(goalSize,dfs.block.size))

  minSize=max(mapred.min.split.size,minSplitSize)(mapred.min.split.size默认为一个字节,minSplitSize随着FileInputFormat的不同而不同,TextInputFormat中默认大小为一个字节)

  goalSize=totalSize/mapred.map.tasks(totalSize为输入文件的大小,mapred.map.tasks的默认值为2)

默认情况下,splitSize的大小也就是min(goalSize,dfs.block.size)。

  当我们的输入文件大小为100M时,若mapred.map.tasks的值为2,则goalSize的大小为50,倘若dfs.block.size的值为64,那么分片的大小splitSize为50,当满足:

  1. 文件大小/splitSize>1.1时,创建一个split,文件剩余大小=文件大小-splitSize
  2. 文件剩余大小/splitSize<=1.1时,剩余的部分作为一个split

所以,map数是2,第一个分片的大小为50,第二个分片的大小为50。

  若mapred.map.tasks的值为1,则splitSize的大小为64,map数目同样是2,第一个分片的大小为64,第二个分片的大小为36。

  

 

转载于:https://www.cnblogs.com/yueliming/archive/2013/05/05/3061040.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值