mapreduce作业调优tips

本文分享了Hadoop MapReduce作业调优的一些实用技巧,包括关闭推测执行、延迟reduce任务开始、JVM重用、增大map输出缓冲、增加reduce并行复制线程、启用map输出压缩、调整输入分片大小、提高合并spill文件时的并行数等,以提升作业执行效率。同时,建议在必要时使用HPROF工具进行性能分析和代码优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  这几天一直在优化job,下面是我认为有用的一些tips。

  1. 推测执行在整个集群上关闭,特定需要的作业单独开启,一般可以省下约5%~10%的集群资源。由mapred.map.task.speculative.execution[default true]和mapred.reduce.task.speculative.execution[default true]分别控制map和reduce的推测执行开关。
    mapred.map.task.speculative.execution=true;
    mapred.reduce.task.speculative.execution=false;
  2. task执行时间很短的时候,关闭推测执行(否则可能会有约5%的task被kill掉,而你会观察到通常kill的是因推测执行而额外启动的tasks)。
  3. 在map时间很长,而map的输出数据并不大的时候,推迟reduce执行时间(否则在推测执行打开的时候会看到有大量的reduce task attempts因过早启动而被kill掉,过早启动会导致集群资源被浪费),这个由mapred.reduce.slowstart.completed.maps[default 0.05,即5%]控制,我甚至看到有的job因为这个kill掉了2*reduceNum以上的task attempts。集群把这个参数设置为0.75应该比较合适。
    mapred.reduce.slowstart.completed.maps=0.80
  4. 当task数量非常多而且通常很短[约1min]的时候,把JVM重用开启,由mapred.job.reuse.jvm.num.tasks[default 1]控制,这通常能获得10%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值