来点Hadoop的料吧,嘻嘻.
Shuffle调优
1.将缓冲区大小(默认100M)设置更大. 一般情况下会将缓冲区设置为250~400M左右
(切分[split]的大小一般会设置与块[block]的大小相同[默认128M].缓冲区的大小值一般取决于切分的大小,所以一般是128M的倍数.为了方便记忆我们一般都说设为250~400M左右)
2.减少溢写次数,如果能够添加Combiner,尽量添加Combiner.
(存在不能Combiner的情况,所以视情况而定.)
3.将缓冲区阈值(默认80%)设置更大.
(但是不推荐该方法,一旦调大阈值也就意味着,一旦写入缓冲区的速度,与写出到磁盘速度差异大时,存在阻塞的可控范围缩小)
4.将MapTask的结果压缩
(文件更小网络的传输速度更快,但是压缩要消耗时间,解压也要消耗时间,并不一定能真正的提高速度)
5.增加fetch线程的数量
(在服务器性能所能承载的范围内添加线程数量)
6.将merge因子设置更大(默认为10)
(不推荐.虽然meger之后传输的文件数量会减少,但是也增加了排序的次数.)
7.将Reduce的阈值设置更小.(默认0.05)
(不推荐,如果MapTask和ReduceTask在同一节点工作,就会发生资源互抢问题.)