[Hadoop]关于Mapreduce中map进程数量的控制

block_size=128; #hadoop2.x
split_size;

goal_num=mapred.map.task(用户设定)
goal_size=total_size/goal_num;

default_num = total_size/block_size(初始);
input_file_num;

1)若想增加map数量,则直接设置mapred.map.tasks为较大值即可(>default_num),因为设置mapred.map.tasks函数只在大于default_num时才生效
2)若想减小map数量,则设置mapred.min.split.size为一个较大的值即可(>block_size),因为
split_size = max(mapred.min.split.size , block_size)
split_num = total_size/split_size

如果total_size/split_size取余之后的数小于12.8M,则不重新为其切分一块,而是将其归于上一切片中,为了避免计算资源的浪费。

综上,map进程数量可计算为
compute_map_num = min(split_num , max(goal_num , default_num))
但考虑到mapreduce中每一个map处理的数据是不能跨越文件的,故有min_map_num >= input_file_num
final_map_num = max(compute_map_num, input_file_num)

其他详见https://www.cnblogs.com/junneyang/p/5850440.html`[【Hadoop】三句话告诉你 mapreduce 中MAP进程的数量怎么控制?]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值