最好的优化是硬件的优化,升级机器配置
技术方面优化:
从数据输入考虑:
①写一个mr程序跑这些小文件,不对数据进行处理,合并小文件。
②使用combineTextInputFormat对小文件进行合并
在Map阶段:
①调整溢写的参数值,增大触发溢写的内存上限,减少溢写次数。从而减少磁盘IO
②减少合并次数:可以通过设置参数,增大Merge的文件数目
③在不影响业务逻辑的前提下,进行combiner,减少I/O
Reduce阶段:
①合理设置Map和reduce数
②设置Map,Reduce共存
③合理设置reduce端的buffer
④规避使用reduce
IO传输考虑:
①采用数据压缩的方式:snappy和LZO压缩编码器
②使用二进制文件
从减少数据倾斜:
①抽样分区
②自定义分区
③使用combiner:聚合和精简数据
④使用Mapjoin,尽量避免Reducejoin