mapred.job.shuffle.input.buffer.percent(R1)

thamsyangsw發表於2014-03-11

說明:用來快取shuffle資料的reduce task heap百分比

Reduce在shuffle階段對下載來的map資料,並不是立刻就寫入磁碟的,而是會先快取在記憶體中,然後當使用記憶體達到一定量的時候才刷入磁碟。

這個記憶體大小的控制就不像map一樣可以透過io.sort.mb來設定了,而是透過另外一個引數來設定:mapred.job.shuffle.input.buffer.percent(default 0.7),

這個引數其實是一個百分比,意思是說,shuffile在reduce記憶體中的資料最多使用記憶體量為:0.7 × maxHeap of reduce task。

也就是說,如果該reduce task的最大heap使用量(通常透過mapred.child.java.opts來設定,比如設定為-Xmx1024m)的一定比例用來快取資料。

預設情況下,reduce會使用其heapsize的70%來在記憶體中快取資料。

如果reduce的heap由於業務原因調整的比較大,相應的快取大小也會變大,這也是為什麼reduce用來做快取的引數是一個百分比,而不是一個固定的值了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26613085/viewspace-1107287/,如需轉載,請註明出處,否則將追究法律責任。

相關文章