mapred.task.profile
是否對任務進行profiling,調用java内置的profile功能,打出相關性能資訊
mapred.task.profile.{maps|reduces}
對幾個map或reduce進行profiling。非常影響速度,建議在小資料量上嘗試
mapred.job.reuse.jvm.num.tasks
1表示不reuse,-1表示無限reuse,其他數值表示每個jvm reuse次數。reuse的時候,map結束時不會釋放記憶體!
mapred.{map|reduce}.tasks.speculative.execution
會對運作慢的任務起一個備份任務,看哪個先完成,kill掉後完成的備份
io.sort.spill.percent
開始spill的記憶體比例門檻值,對map和reduce都生效
mapred.job.shuffle.input.buffer.percent
reduce在copy時使用的堆空間的比例
mapred.tasktracker.{map|reduce}.tasks.maximum
一個Tasktracker上可同時運作的最大map、reduce任務數
mapred.reduce.copy.backoff
reduce擷取一份map輸出資料的最大時間,機關秒。
io.compression.codecs
壓縮算法
dfs.block.size
hdfs上的檔案block大小
mapred.reduce.slowstart.completed.maps
控制reduce的啟動時機。表示全部map的百分之多少完成後,才啟動reduce。如果機器記憶體緊張,可以适當設大改參數,等大部分map結束并釋放記憶體後才啟動reduce;如果希望盡快開始shuffle,則可配合大量map數,将該值設小,以盡早啟動reduce,開始copy。
io.sort.mb
map使用的緩存,影響spill的次數。
mapred.child.java.opts
同時設定map和reduce的jvm參數
mapred.map.child.java.opts
分開設定map的jvm參數,包括GC政策
mapred.reduce.child.java.opts
分開設定reduce的jvm參數
map.sort.class
對map的輸出key的排序方法
mapred.output.compression.type
壓縮類型
mapred.min.split.size
每個map的最小輸入大小,該值越大,map數越少
mapred.max.split.size
每個map的最大輸入大小,該值約小,map數越多
mapred.reduce.parallel.copies
reduce從map結果copy資料時,每個reduce起的并行copy線程數。該值越大,io壓力越大,但可能引起網絡堵塞,copy效率反而降低。
io.sort.factor
merge時的并行merge數,同時影響map的spill檔案merge和reduce中的merge
mapred.compress.map.output
指定map的輸出是否壓縮。有助于減小資料量,減小io壓力,但壓縮和解壓有cpu成本,需要慎重選擇壓縮算法。
mapred.map.output.compression.codec
map輸出的壓縮算法
mapred.output.compress
reduce輸出是否壓縮
mapred.output.compression.codec
控制mapred的輸出的壓縮的方式
io.sort.record.percent
map中間資料的index和data在io.sort.mb中占記憶體的比例,預設0.05%,需要根據具體資料的特點調整:index的大小固定為16byte,需要根據data的大小調整這個比例,以使io.sort.mb的記憶體得到充分利用)。