hadoop中,combine、partition、shuffle作用分別是什么?


combine和partition都是函數,中間的步驟應該只有shuffle!

combine分為map端和reduce端,作用是把同一個key的鍵值對合並在一起,可以自定義的。
combine函數把一個map函數產生的<key,value>對(多個key,value)合並成一個新的<key2,value2>.將新的<key2,value2>作為輸入到reduce函數中
這個value2亦可稱之為values,因為有多個。這個合並的目的是為了減少網絡傳輸。

partition是分割map每個節點的結果,按照key分別映射給不同的reduce,也是可以自定義的。這里其實可以理解歸類。
我們對於錯綜復雜的數據歸類。比如在動物園里有牛羊雞鴨鵝,他們都是混在一起的,但是到了晚上他們就各自牛回牛棚,羊回羊圈,雞回雞窩。partition的作用就是把這些數據歸類。只不過在寫程序的時候,mapreduce使用哈希HashPartitioner幫我們歸類了。這個我們也可以自定義。

shuffle就是map和reduce之間的過程,包含了兩端的combine和partition。


Map的結果,會通過partition分發到Reducer上,Reducer做完Reduce操作后,通過OutputFormat,進行輸出
shuffle階段的主要函數是fetchOutputs(),這個函數的功能就是將map階段的輸出,copy到reduce 節點本地。

Shuffle的正常意思是洗牌或弄亂,Shuffle描述着數據從map task輸出到reduce task輸入的這段過程。partition,是划分,分區,歸類,是shuffle的一部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM