MapReduce优化问题

总结了一下MR优化问题,涉及到hadoop1.0和2.0的调优
1. 从集群的性能方面:
集群能够同时运行Map或者Reduce任务的最大任务数
假设一台机器最多能同时运行10个Map任务和5个Reduce任务,
这个集群有100台服务器,那么map的任务槽就是1000,Reduce的任务槽就是500
合理的设置Map和Reduce任务数:
map:具体根据每个运行的时间设置,调整分片的大小,使每个map任务运行1分钟左右比较合适
reduce: 一般为Reduce任务槽的0.95或者1.75倍,可以在程序中设定
2. 从网络I/O方面:
1)进行本地聚合:combine()函数
合并重复的数据减少网络传输的数据量
2)进行压缩:对Map的中间结果进行压缩,也能减少传输的数据量
但是压缩数据也需要消耗CPU时间,所以需要权衡
3. 从计算方面:
自定义Key:创建比较函数(实现Rawcomparator接口),比较Key的时候不用创建对象
直接比较字节
4. 在shuffle阶段:
较少IO操作,无论是map端和中间结果输出,还是reduce端的输出都涉及到落磁盘的操作
可以通过设置属性可以减少IO次数(具体查看配置文件)
5. JVM重用:
在默认的情况下,每个task任务都需要一个JVM虚拟机来运行,虚拟机的启动时需要消耗时间的
可以通过虚拟机重用,使多个task在同一个JVM上排队执行!通过更改配置文件设置
可能总结有误,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值