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

本文详细解析了Hadoop MapReduce中如何控制Map进程数量,包括block_size、mapred.map.tasks、mapred.min.split.size等参数的作用及计算map数量的公式。了解这些能帮助优化MapReduce作业的性能。

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进程的数量怎么控制?]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值