1. 程式人生 > >大資料筆記-基於mapreduce的並行演算法

大資料筆記-基於mapreduce的並行演算法

7.1 mapreduce

 

mapreduce程式設計:

 

同步工具:

 

實現時需要注意的地方:

 

本地聚合的重要性:

 

字數統計

 

map進化1:引入陣列H(仍然需要combiner)

 

 map進化2:把陣列H變為全域性變數,map結束後再將H輸出

(in-mapper的實現)本地聚合的設計模式:

將combiner的功能整合到mapper中(速度更快,in-mapper是記憶體上的操作->需要記憶體管理)

 

計算平均數

combiner的設計:

example:

map version1:(此時reducer不能代替combiner)

 

version 2:(存在的問題:mapper的輸出不是reducer的輸入->影響了程式的正確性)

 

 version 3:正確版本

 

in-mapper版本:(此時不需要combiner,可以減少通訊量)

 

單詞共現矩陣的計算

方法1詞對法

存在的問題:

估計相對頻率:

 

同步的實現:將同步變成一個排序問題

 

方法2條紋法

存在的問題:

估計相對頻率:

同步的實現:構造資料結構使部分結果聚集到一起

 

再現概括總結:同步工具

tradeoff: