2014-09-19 99 views

回答

3

它的存在,在2.x的,但唯一不同的是,它的名稱已更改:

mapreduce.task.io.sort.mb:緩衝存儲器的總金額,同時將文件分類使用,以兆字節爲單位。默認情況下,給每個合併流1MB,這應該儘量減少搜索。

默認值仍爲100 mb。請在this link找到更多信息。

+0

這是不正確的。你提供的鏈接是r0.23。 'mapreduce.task.io.sort.mb'的「舊」等價物是'io.sort.mb'請參閱:[Hadoop Deprecated Properties](http://hadoop.apache.org/docs/current/hadoop-project -dist/Hadoop的公共/ DeprecatedProperties.html)。至於有問題的('io.sort.record.mb'),它在新的Hadoop中沒有等價物,但仍可以使用相同的名稱設置,並且非常有效(進行了深入調查:似乎通過它的值來限制'mapreduce.task.io.sort.mb'),所以如果你指定了100MB,而另一個是0.17,它基本上使用83MB進行排序。 – msciwoj 2015-01-23 11:28:49

1

io.sort.record.percent是適用於io.sort.mb(舊名)的百分比。

映射輸出數據被放置在內存緩衝區中。當緩衝區填滿時,框架對它進行排序然後溢出到磁盤。一個單獨的線程將排序後的磁盤文件合併到一個較大的排序文件中。緩衝區由兩部分組成:一部分具有連續的原始輸出數據和一個元數據部分,用於將每個記錄的指針保存到原始數據部分。在MR1中,這些部分的大小是固定的,由io.sort.record.percent控制,其說明io.sort.mb空間用於元數據部分的百分比。這意味着,如果沒有對此參數進行適當調整,如果作業有很多小記錄,元數據部分可能比原始數據部分快得多。緩衝區在完全滿之前會溢出到磁盤中。這會影響性能。

MAPREDUCE-64通過允許兩個部分共享相同的空間並且大小不同,解決了MR2中的這個問題。因此不再需要io.sort.record.percent來最小化MR2中的溢出數量。這就是爲什麼這個屬性已被刪除

相關問題