這是中國大學MOOC中大數據算法課程的筆記
圖計算模型
社交網絡建模成圖模型,問:我是我朋友的最好的朋友麼?
相當於建立有權圖,權值代表兩人的親密關係。
能否用MapReduce實現?
點和關係用鄰接表表示
node作爲map的key,鄰接表作爲value。
一個實際用例:誰是我多個朋友的朋友(顯然是我潛在的朋友)
然後,假設我們希望超越直接的朋友關係
例如:有多少我朋友的朋友把我當做他們最好朋友的最好朋友?
距離k>2的情況
這裏我們需要運行多輪MapReduce,即迭代MapReduce,上一輪MapReduce的結果是下一輪MapReduce的輸入。
因爲一輪MapReduce只能做一跳。
許多圖的算法需要多個map/reduce階段:迭代mapreduce和mapreduce鏈
另一類算法的實現:基於路徑的算法
重點講單源最短路徑的並行化
Dijkstra算法
http://blog.csdn.net/v_JULY_v/article/details/6096981
每一輪爲定長邊的情況
下面是一個實例初步情況:mapper裏存的是鄰接原點的點ID和它們到S的距離
在reducer中算出當前S到A和S到C的最短路徑。
下一個階段:mapper中是經過上一輪的點到下一個點的總距離。
reducer中是新一輪計算後的各點距離。
下一階段同理。直到輸出不變。