您的位置:首页 > 运维架构 > Apache

BSP-Apache HAMA-Graph运行(3)

2016-07-07 17:08 525 查看

5、通信信息接收





由localQueue.poll()得出,信息的接收是通过Queue来完成的。

在GraphJobRunner.loadVertices()方法完成了信息的发送(send())、传递、障栅同步(sync())、接收(getCurrentMessage())等操作,而且信息的真正发送是在障栅同步(sync())阶段开始的。信息的发送和接收并不是一一对应的。
每个bsp任务信息传递都是一组输出信息管理器(OutgoingMessageManager)和输入队列组成;输出信息管理器收集发送的信息,序列化它、对它打包(bundle),在障栅同步阶段,bsp任务让信息在bsppeer之间做信息交换,解包并把解包后的信息方法队列中

6、超步计算

经过障栅同步(sync())后,每一次障栅同步也是一个超步的完成和下一个超步的开始在GraphJobRunner.loadVertices()方法中运行完成障栅同步(sync())直到信息的接收(peer.getCurrentMessage())后,运行GraphJobRunner.setup()方法,setup阶段是顶点计算的初始化阶段,代码如下:



在GraphJobRunner.setup()方法中运行完成loadVertices(peer)之后,运行doInitialSuperstep()方法,此时才是超步(superstep)开始实现startSuperstep(),GraphJobRunner.doInitialSuperstep()

7、Graph执行—run()



由“we do supersteps while we still have updates and have not reachedour maximum itreations yet”得知当还有信息更新或者没有达到要求得最大迭代数的时候还要继续执行superstep。



最后,就是在GraphJobRunner.dosuperstep(GraphJobMessagecurrentMessage,BSPPeer peer)方法中的vertex.compute()和方法vertex.finishVertexComputation()方法之间迭代,直到所有顶点运行完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hama bsp