Giraph在一个superstep中要做的事情大概分为3步
    1.处理单元要对每一个active vertices迭代,call compute(),在一个vertex生成message后,它们会被发送到对应的处理单元根据destination vertex.在message被发送前沪指当它们到底destination的时候,combiners会被调用,在这些不同的阶段。处理单元在结束computing vertex后并且完成发送剩余信息后,会等待在synchronization barrier上等待其它units完成
    2.processing units会总结aggregators computation然后aggregete local aggregations.当 processing units完成了aggregations后,它们会到next superstep.
    3 在 offloading phase, 这时候processing units已经在memory里面有了vertex values edges with values.这些数据代表着结果,processing units 把这些数据写回到opersistent storage.整个运算就结束了
    在传统的BSP模型中,一个superstep被分为3步: 本地的计算, 消息的传递, 同步的barrier.
    然而Giraph在superstep中则不太相同,它把本地计算和消息传递合在一起了,处理单元在它们刚出来的时候就可以exchange message了,
    而不是等待其它vertex完成,这会使得d我们减少network一些时间,
    尤其是在hadoop clusters上运行着很多工作的时候, 这样的处理会使得giraph变得更加高效,带来更小的负担。