首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

Hama学习札记(3)-编写BSP程序

2013-01-27 
Hama学习笔记(3)-编写BSP程序Hama中提供了BSP框架的编程接口,就像MapReduce一样方便使用。[引用请注明出处:

Hama学习笔记(3)-编写BSP程序

Hama中提供了BSP框架的编程接口,就像MapReduce一样方便使用。

[引用请注明出处:http://blog.csdn.net/bhq2010/article/details/8531243]

BSP框架

首先明确一下BSP的概念:

BSP是一个计算框架,按照这个框架编写的BSP程序会在集群的各个节点上做本地的I/O和计算,这一点和MapReduce相似(其实BSP的提出比MapReduce还要早差不多10年,应该算前辈才是~),但不同的是BSP框架中,各个节点之间可以进行比较有效的通信。

一个BSP程序(或者叫BSP Job)的执行过程中包含了若干个超步(Supersteps),每个超步的执行过程又有以下三个步骤:

各个节点本地的计算->节点间通信->节点同步

第一和第二个步骤之前其实没有明确的界限。在一个超步中,各个结点在进入同步状态之前可以随时进行I/O和通信。

当某个结点认为自己的计算任务已经完成时,可以进入同步状态并挂起。当一个超步中所有的结点都进入同步状态时,一个超步就结束了,各个节点从挂起处开始继续执行,所有结点都退出时,整个BSP程序就结束了。

继承BSP类

Hama中编写BSP程序和Hadoop MapReduce差不多,首先写一个类,继承Hama API中的BSP抽象类,例如:

方法描述send(String peerName, BSPMessage msg)Sends a message to another peer.getCurrentMessage()Returns a received message.getNumCurrentMessages()Returns the number of received messages.sync()Barrier synchronization.getPeerName()Returns a peer's hostname.getAllPeerNames()Returns all peer's hostname.getSuperstepCount()Returns the count of supersteps

这些都是bsp方法的参数peer的方法,像上面调用read、write方法一样调用即可。

同步

调用peer.sync()方法可以使当前节点进入同步状态,当所有的节点都进入同步状态后,同步完成,开始下一个超步或者结束Job。

[引用请注明出处:http://blog.csdn.net/bhq2010/article/details/8531243]


热点排行