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階段用來緩存數據的百分比 |