PageRank:搜索引擎在使用PageRank的时候,需要计算每个节点的PageRank的值:
上图给出了这个值的计算公式,每个节点的PageRank值由2部分构成,一个是节点初始的PageRank值,另一个是它连接的所有邻居节点的PageRank值。
前者意味着邻居节点多则PageRank值高,后者意味着邻居节点的质量也会影响节点本身的PageRank值。
以社交网络为例:2个人,每个人都有5个朋友,甲的朋友是Lily,Lucy,Andy,Kitty,Rocky,而乙的朋友是奥巴马,Bill Gates之类的精英,那么显然乙的重要程度应该高于甲。
上述计算过程需要反复迭代多次,在实现的时候使用了MapReduce算法,将计算任务分发给多个节点并行计算(Map),然后汇总多个节点的计算结果(Reduce)。
而2000年以后,PageRank的计算已经不使用MapReduce,而是使用Pregel。
相比MapReduce,不同之处在于Pregel以节点为中心,而不是以整个图为整体。每个节点计算出一个值以后,会主动发送消息给其他节点,告知更新后的结果。
每个节点收到邻居节点发送的Msg以后,提取出邻居节点的值,就可以进行新一轮更新计算,如下图所示: