天天看點

hadoop job 重要性能參數

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的記憶體得到充分利用)。

繼續閱讀