簡體   English   中英

當我們不在Mapreduce中使用Combiner時?

[英]When we are not use Combiner in Mapreduce?

每個Hadoop開發人員都知道Combiner是優化mapreduce的關鍵,但是它是可選的。 它可以最小化帶寬並提高mapreduce作業的性能。 在這里,我的問題是,hadoop會將許多功能默認設置為數據局部性問題,而不是將Combiner設置為默認值。 為什么? 這意味着在所有情況下都不推薦使用合並器嗎? 什么時候不使用組合器? 如果我將其設置為默認值,會有什么問題?

如果reduce函數既是可交換的又是關聯的,則可以使用Combiner。 這是因為值在隨機排序之前在本地進行了組合。


可交換的 -根據值處理操作的順序在某種程度上對結果沒有影響:

1 + 2 + 3 = 1 + 3 + 2

關聯 -我們根據值處理操作的順序在某種程度上對結果沒有影響:

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

因此,最好將合並器用於sum()操作,但是有些操作對它不起作用。 因此,決定組合器是否可用於特定算法始終是程序員的責任。

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

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

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

有關合路器和減速器的區別,請檢查以下鏈接:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM