MapReduce实现的PageRank原理

PageRank手工计算得出的值见帖子 http://f.dataguru.cn/thread-17158-1-1.html 这个值有助于我们验证下面MR计算是不是正确
首先假设有两个节点A和B 原始矩阵如tiger老师的幻灯片第九页  a=1
网页1和2保存在节点A上 网页3和4保存在节点B上
由于A在A上很容易计算1和2的出链 根据MR的本地运算的思想,网页1和2的处理必在A上完成,B也同理
那么我们可以设计Map函数,这个函数的作用有两:1、得到源矩阵 2、用源矩阵乘以列向量
得到在A上需要计算的源矩阵:
0       0
1/3   0
1/3   1/2
1/3  1/2
同理在B节点上要计算的源矩阵:
0     0
0     1
0     0
1     0
基于矩阵的乘法规则 我们假设一个列向量q00={{1},{1}} q10={{1},{1}}
把q0和q1分别发送到节点A和节点B上 然后进行计算 我们姑且把计算出来的向量叫做qa和qb:
在A上:
        0*1+0*1               0
        1/3*1+0*1         1/3
qa=  1/3*1+1/2*1  =    5/6
        1/3*1+1/2*1        5/6


在节点B上:
       0*0+0*1             0
      0*1+1*1             1
qb=0*1+0*1    =      0
      1*1+0*1             1


然后通过网络把qa和qb发送到执行reduce函数执行的节点上 reduce函数的作用也有两个:1、合并计算结果 2、进行排序输出


                        0
                       4/3
q1 = qa+qb= 5/6
                      11/6


发现这个q1正是我们手工计算时的第一轮迭代的结果,下面的步骤就简单了
那就是把这个q1分发到A和B进行计算新的qa和qb 这是q00={{0,4/3}} q10={{5/6,11/6}}
计算后:
        0*0+0*4/3                 0
        1/3*0+0*4/3             0
qa=  1/3*0+1/2*4/3   =    4/6
        1/3*0+1/2*4/3         4/6






        0*5/6+0*11/6                         0
        0*5/6 +1*11/6                   11/6
qb=  0*5/6 +0* 11/6     =            0
        1*5/6 +0* 11/6                  5/6


                      0
                     11/6
q2=qa+qb=  4/6
                     9/6


和我们手工计算的q2相同,如果反复进行运算 知道得到一个理想值,这就是用MR实现PageRank的原理了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值