
优化点:
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=256000000; -- 决定每个map处理的最大的文件大小,单位为B
set mapred.min.split.size.per.node=128000000; -- 节点中可以处理的最小的文件大小
set mapred.min.split.

本文详细探讨了MapReduce在大数据处理中的优化策略,包括map个数设置、向量化模式、map join、聚合操作、reduce个数控制以及推测执行等关键参数的调整,旨在提升Hadoop和Hive的性能。
最低0.47元/天 解锁文章
1799

被折叠的 条评论
为什么被折叠?



