优化点:
1.map个数设置:
默认map个数
default_num=total_size/block_size;
期望大小
goal_num=mapred.map.tasks;
设置处理的文件大小
split_size=max(mapred.min.split.size,block_size);
split_num=total_size/split_size;
计算的map个数
compute_map_num=min(split_num,max(default_num,goal_num))
1)如果想增加map个数,则设置mapred.map.tasks为一个较大的值。
2)如果想减小map个数,则设置mapred.min.split.size为一个较大的值。有如下两种情况:
情况1:输入文件size巨大,但不是小文件增大mapred.min.split.size的值。
情况2:输入文件数量巨大,且都是小文件,就是单个文件的size小于blockSize。这种情况通过增大mapred.min.spllt.size不可行,需要使用CombineFileInputFormat将多个input path合并成一个(合并小文件输入)InputSplit送给mapper处理,从而减少mapper的数量。
set mapred.max.split.size