MapReduce性能的瓶颈:
作为分布式系统程序,MapReduce的瓶颈主要表现在两个方面:
1.计算机性能:包括CPU、内存、磁盘健康、网络
2.I/O操作优化:数据倾斜、Map和Reduce数设置不合理等
所以优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、I/O传输、数据倾斜问题和调参。
数据输入:
1.合并小文件:大量的小文件会产生大量的装载任务,增大Map任务装载次数。
2.采用CombineTextInputFormat来作为输入,解决输入端大量小文件场景。
Map阶段:
1.减少溢写(Spill)次数
2,减少合并次数
3.在Map之后,不影响业务逻辑前提下,先进行combine处理,减少I/O。
Reduce阶段:
1.合理设置Map和Reduce数
2.设置Map、Reduce共存
3.规避使用Reduce
I/O传输:
1.采用数据压缩的方式,减少网络I/O的时间
2.使用SequenceFile二进制文件
数据倾斜问题:
分为数据频率倾斜以及数据大小倾斜,减少方法:
1.抽样和范围分区
2.自定义分区
3.Combine:大量减少数据倾斜,通过聚合合并精简数据
4.采用Map Join,尽量避免Reduce Join
571

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



