Hadoop 相关调优

作业调优检查的范围

Mapper的数量mapper需要运行多长时间?如果平均只运行几秒钟,则可以看是否能用更少mapper运行更长时间,通常一分钟左右。时间长度取决于使用的输入格式。
Reducer的数量为了达到最高性能,集群中reducer数应该少于reducer的任务槽数。这将使reducer能够在同一个周期完成任务,并在reducer阶段充分使用集群
Combiner作业能否充分利用combiner来减少通过shuffle传输的数据量
中间值的压缩对map输出进行压缩几乎总能使作业执行的更快
自定义序列如果使用自定义的Writable对象或自定义的comparator,则必须确保已实现RawComparator
调整shuffleMapReduce的shuffle过程可以对一些内存管理的参数进行调整,以弥补性能的不足

Map端的调优属性
Io.sort.mb int 100 排序map输出时所使用的内存缓冲区的大小,以兆字节为单位
Io.sort.record.percent float 0.05 用作存储map输出记录边界的io.sort.mb的比例。剩余的空间用来存储map输出记录本上。1.x版本后已经删除
Io.sort.spill.percent float 0.80 map输出内存缓冲和用来开始磁盘溢出写过程的记录边界所有,两者使用比例的阙值
Io.sort.factor int 10 排序文件时,一次最多合并的流数。这个属性也在reduce中使用,此值增加到100是很常见的
min.num.spills.for.combine int 3 运行combiner所需的最少溢出文件数
mapred.compress.map.output Boolean false 压缩map输出
mapred.map.output.compression.codec class name org.apache.hadoop.io.compress.DefaultCodec 用于map输出的压缩编解码

reduce端的调优属性
mapred.reduce.parallel.copies int 5 用于把map输出复制到reducer的线程数
mapred.reduce.copy.backoff int 300 在声明失败之前,reducer获取一个map输出所花的最大实际,以秒为单位。如果是吧,reducer可以在此时间内尝试重传
io.sort.factor int 10 排序文件时一次最多合并的流的数量
mapred.job.shuffle.input.buffer.percent float 0.70 在shuffle的复制阶段,分配给map输出的缓冲区占堆空间的百分比
mapred.iob.shuffle.merge.percent float 0.66 map输出缓冲区的阙值使用比例,用于启动合并输出和磁盘溢出写的过程
mapred.inmem.merge.threshold int 1000 启动合并输出和磁盘溢出写过程的map输出的阙值数。0或更小的数意味着没有阙值限制
mapred.iob.reduce.input.buffer.percent float 0.0 在reduce过程中,在内存中保存map输出的空间占整个堆空间的比例。Reduce阶段开始时,内存中的map输出大小不能大于这个值。默认情况下,在reduce任务开始之前,所有map输出都合并到磁盘上,以便为reducer提供尽可能多的内存。然而,如果reducer需要的内存比较少,可以增加此值来最小化访问磁盘的次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值