pangrank演算法--PageRank演算法並行實現
前言
Google透過PageRank演算法模型,實現了對全網際網路網頁的打分。但對於海量資料的處理,在單機下是不可能實現,所以如何將PageRank平行計算,將是本文的重點。
本文將繼續上一篇文章 ,把PageRank單機實現,改成並行實現,利用MapReduce計算框架,在叢集中跑起來。
目錄
PageRank演算法並行化原理
MapReduce分步式程式設計
PageRank的分步式演算法原理,簡單來講,就是透過矩陣計算實現並行化。
1). 把鄰接矩陣的列,按資料行儲存
鄰接矩陣
[,1] [,2] [,3] [,4][1,] 0.0375000 0.0375 0.0375 0.0375[2,] 0.3208333 0.0375 0.0375 0.8875[3,] 0.3208333 0.4625 0.0375 0.0375[4,] 0.3208333 0.4625 0.8875 0.0375
按行儲存HDFS
1 0.037499994,0.32083333,0.32083333,0.320833332 0.037499994,0.037499994,0.4625,0.46253 0.037499994,0.037499994,0.037499994,0.887500054 0.037499994,0.88750005,0.037499994,0.037499994
2). 迭代:求矩陣特徵值
map過程:
input: 鄰接矩陣, pr值
output: key為pr的行號,value為鄰接矩陣和pr值的乘法求和公式
reduce過程:
input: key為pr的行號,value為鄰接矩陣和pr值的乘法求和公式
output: key為pr的行號, value為計算的結果,即pr值
第1次迭代
0.0375000 0.0375 0.0375 0.0375 1 0.1500000.3208333 0.0375 0.0375 0.8875 * 1 = 1.2833330.3208333 0.4625 0.0375 0.0375 1 0.8583330.3208333 0.4625 0.8875 0.0375 1 1.708333
第2次迭代
0.0375000 0.0375 0.0375 0.0375 0.150000 0.1500000.3208333 0.0375 0.0375 0.8875 * 1.283333 = 1.64458330.3208333 0.4625 0.0375 0.0375 0.858333 0.73791670.3208333 0.4625 0.8875 0.0375 1.708333 1.4675000
… 10次迭代
特徵值
0.15000001.49557210.82550341.5289245
3). 標準化PR值
0.150000 0.03750001.4955721 / (0.15+1.4955721+0.8255034+1.5289245) = 0.37389300.8255034 0.20637591.5289245 0.3822311
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1762/viewspace-2810611/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PageRank演算法概述與Python實現演算法Python
- PageRank演算法初探演算法
- 排名演算法(一)--PageRank演算法
- PageRank 演算法-Google 如何給網頁排名演算法Go網頁
- 任務排程並行演算法的Java簡單實現並行演算法Java
- 任務排程並行演算法的Python簡單實現並行演算法Python
- 模型並行-Gpipe演算法模型並行演算法
- 並查集的概念與演算法實現並查集演算法
- 10行實現最短路演算法——Dijkstra演算法
- 並行排序演算法:雙調排序並行排序演算法
- 並行Louvain社群檢測演算法並行AI演算法
- PARL1.1一個修飾符實現並行強化學習演算法並行強化學習演算法
- 任務排程的並行演算法並行演算法
- micropather實現A*演算法演算法
- ARC演算法實現演算法
- LFU演算法實現演算法
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 並查集演算法Union-Find的思想、實現以及應用並查集演算法
- php演算法實現(一)PHP演算法
- Go 實現雪花演算法Go演算法
- FM演算法python實現演算法Python
- python實現冒泡演算法Python演算法
- 排序演算法Java實現排序演算法Java
- golang洗牌演算法實現Golang演算法
- KMP演算法 Java實現KMP演算法Java
- 排序演算法 Java實現排序演算法Java
- 雪花演算法的實現演算法
- python實現FM演算法Python演算法
- 並行化最佳化KD樹演算法:使用C#實現高效的最近鄰搜尋並行演算法C#
- Twitter雪花演算法SnowFlake演算法的java實現演算法Java
- JavaScript實現《啊哈!演算法》中的系列演算法JavaScript演算法
- 【演算法】Java實現七種常用排序演算法演算法Java排序
- 40行程式碼實現React核心Diff演算法行程React演算法
- 並查集演算法並查集演算法
- 使用MPI並行化遺傳演算法框架GAFT並行演算法框架
- acw_sc__v2引數生成分析並python實現演算法Python演算法
- 線性表演算法實現演算法
- Sunday搜尋演算法實現演算法