BSP-Apache HAMA-Graph运行(3)

本文详细介绍了基于BSP模型的图计算过程,包括通信信息的接收方式、超步计算流程以及Graph执行机制。文章重点阐述了信息如何通过队列进行发送与接收,以及在超步中顶点计算是如何迭代完成的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()方法之间迭代,直到所有顶点运行完成。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值