Map端参数调整

参数名称 类型
默认值 说明
io.sort.mb int 100 Map阶段内存缓存区大小,默认100M
io.sort.record.percent float 0.05
io.sort.mb有5%保存记录边界,其他缓存用来保存数据
io.sort.spill.percent float 0.8 io.sort.mb超过80%时,进行Spill操作
io.sort.factor int 10 map结束前做Merge操作时的线程数
min.num.spill.for.combine int 3 当Map任务生成3个Spill文件时,调用Combine
mapred.compress.map.output boolean false 在Spill文件时,或Merge时,保存到磁盘的文件先压缩再保存
mapred.map.output.compression.codec class

org.apache.hadoop.io.

compress.DefaultCodec

GzipCodec,LzoCodec,BZip2Codec,LzmaCodec,SnappyCodec等压缩格式,Lzo和Snappy是按块进行压缩比较合适HDFS按块存储的结构


Reduce端参数调整

参数名称 类型 默认值 说明
mapred.reduce.parallel.copies int 5 每个reduce并行下载map结果的最大线程数
mapred.reduce.copy.backoff int 300 每个reduce下载线程最大等待时间(300s)
io.sort.factor int 10 同Map端
mapred.child.java.opts string
jvm参数配置
mapred.job.shuffle.input.buffer.percent float 0.7 Reduce从Map端Copy的数据保存到内存(JVM -Xmx)的大小百分比,默认mapred.child.java.opts*0.7
mapred.job.shuffle.merge.percent float 0.66 Reduce做Merge操作将内存中的数据写入磁盘,默认mapred.child.java.opts*0.7*0.66
mapred.job.reduce.input.buffer.percent float 0.0 Reduce数据默认从磁盘读取,设置此参数将Reduce阶段用来缓存数据的百分比