这里主要讲Aggregator, 在Pagerank计算中,由于每轮需要计算aggregation的值,即Hama中的globalError,这是一个每轮根据各个顶点value汇总进行reduce的聚合值,由于Pregel中即使顶点已经收敛,但其邻接顶点未收敛的话,他将被迫参与运算, 比如1->2, 3->2, 即使1收敛了,2,3未收敛的话,1同样将参与计算,无法halt,必须等到
MAXIMUM_CONVERGENCE_ERROR > globalError.get()
即所有顶点汇总的aggregation值小于自定义的MAXIMUM_CONVERGENCE_ERROR 时,才能有 voteToHalt();
即当前顶点才能停止计算,而不是当它收敛时就停止计算!
这是Pregel的一个大问题。GraphLab对此进行了解决。