当我们写完一个MR程序之后,我们希望能够加快程序的执行速度,那么怎么进行性能的调优呢,有如下几种方法?
1、mapper的数量
适当调整mapper的数量,使得每个mapper的运行时间在1分钟为宜。因为mapper数量过小,则会导致整体速度过慢。太多则导致文件的寻址开销,以及namenode和datanode的交互更加频繁。
2、reducer的数量
集群中reducer的数量应该略少于reducer的任务槽数。这将使reducer能够在同一个周期完成。充分利用集群。
3、combiner
合理的利用combiner,减少中间mapper —> reducer过程中数据的传输数量。
4、中间值的压缩
将mapper的输出进行压缩
5、shuffle
内存中的shuffle过程可以对内存的参数进行一些调整,以弥补性能的不足。