1)优化的思路可以从配置文件和系统以及代码的设计思路来优化 2)配置文件的优化:调节适当的参数,在调参数时要进行测试 3)代码的优化:combiner的个数尽量与reduce的个数相同,数据的类型保持一致,可以减少拆包与封包的进度 4)系统的优化:可以设置linux系统打开最大的文件数预计网络的带宽MTU的配置 5)为 job 添加一个 Combiner,可以大大的减少shuffer阶段的maoTask拷贝过来给远程的 reduce task的数据量,一般而言combiner与reduce相同。 6)在开发中尽量使用stringBuffer而不是string,string的模式是read-only的,如果对它进行修改,会产生临时的对象,二stringBuffer是可修改的,不会产生临时对象。 7)修改一下配置:以下是修改 mapred-site.xml 文件 a、修改最大槽位数:槽位数是在各个 tasktracker 上的 mapred-site.xml 上设置的,默认都是 2 mapred.tasktracker.map.tasks.maximum 2 mapred.tasktracker.reduce.tasks.maximum 2 b、调整心跳间隔:集群规模小于 300 时,心跳间隔为 300 毫秒 mapreduce.jobtracker.heartbeat.interval.min 心跳时间 mapred.heartbeats.in.second 集群每增加多少节点,时间增加下面的值 mapreduce.jobtracker.heartbeat.scaling.factor 集群每增加上面的个数,心跳增多少 c、启动带外心跳 mapreduce.tasktracker.outofband.heartbeat 默认是 false d、配置多块磁盘 mapreduce.local.dir e、配置 RPC hander 数目 mapred.job.tracker.handler.count 默认是 10,可以改成 50,根据机器的能力 f、配置 HTTP 线程数目 tasktracker.http.threads 默认是 40,可以改成 100 根据机器的能力 g、选择合适的压缩方式,以 snappy 为例: mapred.compress.map.output true mapred.map.output.compression.codec org.apache.hadoop.io.compress.SnappyCodec
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。