https://www.cnblogs.com/felixzh/p/8604188.html
1)数据输入小文件处理
(1)合并小文件,对小文件进行归档(har),自定义inputforma将小文件存储成squenceFile文件。
(2)采用ConbineFileInputFormat来作为输入,解决输入端大量小文件场景。
(3)对于大量小文件job,可以开启JVM重用。
2)map阶段
(1)增大环形缓冲区大小。由100M扩大到200M。
(2)增大缓冲区溢写的比例。由80%扩大到90%
(3)减少对溢写文件的,merge次数。
(4)不影响实际业务的前提下,采用combiner提前合并,减少I/O。
2)reduce阶段
(1)合理设置map和reduce数,两个都不能设置太少,也不能设置太多。太少,会导致task等待,延长处理实际;太多,会导致map,reduce任务间竞争资源,造成处理超时等错误。
(2)设置map,reduce共存,调整slowstart.completedmaps参数,使map运行到一定程度后,reduce也开始运行,减少reduce的等待时间。
(3)规避使用reduce,因为reduce在用于连接数据集的时候将会产生大量的网络消耗。