2015-04-17 56 views
0

每個Hadoop開發人員都知道Combiner是優化mapreduce的關鍵,但它是可選的。它可以最小化帶寬並提高mapreduce作業性能。在這裏,我的問題是,hadoop默認使用許多功能,如數據局部性問題,但不會使Combiner成爲默認值。爲什麼?這意味着在所有情況下組合器都不值得推薦?當我們不使用組合器?如果我將它作爲默認最新的問題?當我們不使用Mapreduce中的Combiner?

回答

4

合併器可以用於防止縮減功能是交換和關聯。這是因爲價值在以任意順序洗牌之前在本地結合在一起。


可交換 - 我們處理的操作對值順序已在某種程度上對結果沒有任何影響:

1 + 2 + 3 = 1 + 3 + 2

聯想 - 我們處理對值的業務已在某種程度上對結果沒有任何影響的順序:

(1 + 2)+ 3 = 1 +(2 + 3)

所以這是很好的使用組合器即G。對於sum()操作,但有些操作不起作用。所以程序員總是有責任決定組合器是否可以用於特定的算法。

0

如果您在工作中設置了組合器,Hadoop將根據這些數據決定,是否運行組合器。

但是,如果您沒有設置組合器,那麼Hadoop將不會運行組合器。

當組合器運行時,它會減小輸出的大小。因此少量數據將在網絡中傳播。

對於組合器和減速之間的差異,檢查下面的鏈接:

http://blog.optimal.io/3-differences-between-a-mapreduce-combiner-and-reducer/

相關問題