mapreduce的shuffle,partition,combine

[b]shuffle:[/b]

  是描述着數據從map端傳輸到reduce端的過程,而且我們知道的是hadoop的集羣環境中,大部分map task和reduce task是在不同的node上執行,主要的開銷是網絡開銷和磁盤IO開銷,因此shuffle的主要作用相當於是

  1.完整的從map task端傳輸到reduce task端。

  2.跨節點傳輸數據時,儘可能減少對帶寬的消耗.(注意是reduce執行的時候去拉取map端的結果)

  3.減少磁盤IO開銷對task的影響。

shuffle的詳細:http://webcache.googleusercontent.com/search?q=cache:MP_qIMfp1N4J:langyu.iteye.com/blog/992916+mapreduce+shuffle+partition%E4%BD%9C%E7%94%A8&cd=1&hl=zh-CN&ct=clnk&gl=cn

[b]Partition:[/b]
Partition主要作用就是將map的結果發送到相應的reduce。這就對partition有兩個要求:

1)均衡負載,儘量的將工作均勻的分配給不同的reduce。

2)效率,分配速度一定要快。

  重定向mapper的輸出,根據key來決定mapper應該講k,v對輸出給誰,默認採用的hash key來實現,也可以根據自己的需要來實現。

partition的更多參考:http://blog.oddfoo.net/2011/04/17/mapreduce-partition%E5%88%86%E6%9E%90-2/

[b]combiner:[/b]

  相當於本地的reduce,在分發mapper的結果之前做一下本地的reduce,比如說wordcount程序,單詞“a”出現了500次,存儲並洗牌一次(“a”,500)鍵值對比許多次(“a”,1)要高效。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章