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阶段用来缓存数据的百分比 |