MapReduceII

Mapreduce 程序效率的瓶颈在于:
CPU、内存、磁盘、网络

MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、IO传输、数据倾斜问题、常用的调优参数。

数据输入:合并小文件,采用CombineTextInputFormat来作为输入,解决输入端大量小文件场景
Map阶段:减少溢写(spill)次数、减少合并(merge)次数、不影响业务逻辑前提下,进行combine处理,减少 I/O
Reduce阶段:合理设置map和reduce数
            太少,会导致task等待,延长处理时间;太多,会导致 map、reduce任务间竞争资源,造成处理超时等错误
            
            Map数:由输入的文件总个数,文件的大小,块大小
            reduce数:配置设置,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题

IO传输:
输入文件压缩时可以Lzo,snappy适用于 Map -> Reduce 作为中间数据的压缩格式

数据倾斜问题:map端局部聚合Combine、采用Map Join,尽量避免Reduce Join

常用的调优参数:
      mapreduce.task.io.sort.mb      shuffle的环形缓冲区大小,默认100m
      mapreduce.map.sort.spill.percent   环形缓冲区溢出的阈值,默认80%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值