Mapreduce的优化策略

(1)Combiner优化
在之前的shuffle过程中的map端生成最终溢写文件时,例如:aaa 1, aaa 1 这样的数据会被合并为{aaa [1,1]} ,而我们可以通过给每个map显示的设定combiner,来将这个节点的输出优化,即如前面的例如,如果他们是同一节点的数据,他们会合并为{aaa,2},combiner相当于小型的reduce,不过他们这要求reduce的输入数据格式和输出数据格式一致,并且value的值是满足结合律的
(2)压缩
通过在对数据压缩,来减少网络IO,减少磁盘占用,可以用在三个地方:输入数据压缩、map输出压缩、reduce输出压缩。当然压缩也会增加CPU计算
(3)map的数量
Map task的数量使用split的数量决定的,split的数据越少,每个map task的执行时间就越短,但是相应的job的执行时间也会被拉长,因为内部调度的时间更长了。
(4)reduce的数量
可以在client设置,增加reduce的数量
(5)大量小文件的优化
Mapreduce不怕大文件,就怕小文件,默认情况下,TextInputFormat对任务的切片机制是按照文件规划切片,不管有多少个小文件,都会是单独的切片,都会交给一个maptask,这样,如果有大量的小文件,就会产生大量的maptask,处理效率极端底下
最好的方法:在数据处理的最前端(预处理、采集),就将小文件合并成大文件,
在上传到HDFS做后续的分析,如果已经是大量的小文件在HDFS中了,可以使用另一种inputformat来做切片(CombineFileInputformat),它的切片逻辑跟FIleinputformat不同:它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个maptask了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值