1、3 作业性质 14 作业考核方法 15 作业提交日期与方式 16 作业准备 16.1、 Hama计算框架的安装配置 16.2、用Hama计算模型实现寻找最大独立集问题算法 47 作业内容 98 实验报告 9附录1:任课教师介绍 9附录2:课程教材介绍 10附录3:中国高校大数据课程公共服务平台介绍 11厦门大学林子雨编著大数据技术原理与应用图计算框架Hama基础操作实践上机练习说明E-mail: ziyulin 个人主页:1 作业题目图计算框架Hama基础操作实践。2 作业目的 旨在让学生了解Pregel图计算模型,并学会用Pregel的开源实现Hama实现一些基本操作。3 作业性质 课后作业
2、,必做,作为课堂平时成绩。4 作业考核方法 提交上机实验报告,任课老师根据上机实验报告评定成绩。5 作业提交日期与方式 图计算章节内容结束后的下一周周六晚上9点之前提交。6 作业准备 请阅读厦门大学林子雨编著的大数据专业教材大数据技术原理与应用(官网:6.1、 Hama计算框架的安装配置Apache Hama是Google Pregel的开源实现,与Hadoop适合于分布式大数据处理不同,Hama主要用于分布式的矩阵、graph、网络算法的计算。简单说,Hama是在HDFS上实现的BSP(Bulk Synchronous Parallel)计算框架,弥补Hadoop在计算能力上的不足。(1).
3、 安装好合适版本的jdk和hadoop,并且进行测试,保证他们能用。(2). 下载hama安装文件,从http:/hama.apache.org/downloads.html处下载合适的版本,我当时下的是0.6.4版本的。(3). 在用户主目录下创建合适的安装目录文件,我这里是在下创建了hama文件夹作为安装目录,即/hama为安装目录。(4). 将下载好的hama-0.6.4.tar.gz拷贝到/hama中去,并用tar zvxf hama-0.6.4.tar.gz进行解压。(5). 进入hama-0.6.4中的conf文件夹,修改hama-env.sh文件,在其中加入java的home路径
4、,即加入:Export JAVA_HOME=/home/wanglianping/java/jdk.1.7.0_91(6). 修改hama-site.xml文件,这时hama配置的核心文件,具体内容如下: namebsp.master.addressvalue192.168.91.128:40000descriptionThe address of the bsp master server. Either the literal string local or a host:port for distributed mode/description/propertyfs.default.na
5、mehdfs:/192.168.91.128:9000/ The name of the default file system. Either the literal string port for HDFS.hama.zookeeper.quorum192.168.91.128Comma separated list of servers in the ZooKeeper Quorum. For example, ,. By default this is set to localhost for local and pseudo-distributed modes of operatio
6、n. For a fully-distributed setup, this should be set to a full list of ZooKeeper quorum servers. If HAMA_MANAGES_ZK is set in hama-env.sh this is the list of servers which we will start/stop zookeeper on.hama.zookeeper.property.clientPort2181其中,bsp.master.address即bsp中的BSPMaster的地址和端口。fs.default.name
7、这个值要特别注意,是hadoop中nameNode的地址和端口,因为hama要用到hadoop的hdfs分布式文件系统。剩下的俩个是zookeeper的相关配置。(7).另外,在conf文件夹下还有一个groomservers文件,这个在分布式环境下配置groomserver的地址,在单机模式下就不用配置了,里面默认值为localhost。同时,你也可以在/.bashrc中添加hama的环境变量,这样每次启动就不同转到相应的目录下去了。(8). 启动hadoop,并验证是否启动成功。命令:HADOOP_HOME/bin/start-all.sh,如果启动成功,如下:启动hama,命令:HAMA
8、_HOME/bin/start-bspd.sh,结果如下:出现上述结果,则表明hama已经成功启动。6.2、用Hama计算模型实现寻找最大独立集问题算法 (1). 本算法参考 Lubys classic parallel algorithma simple parallel algorithm for maximal independent set problem,把顶点分为三类: 1) S:The MIS being constructed. Starts empty and grows in iterations.2) NotInS: Vertices that have at least
9、 one edge to a vertex in S and as a result cannot be in S.3) Unknown: Vertices that do not have an edge to any vertex in S but are not yet in S.(2).Hama模型下 MIS(Maximal Independent Set)算法描述。1)初始时,把所有顶点的value值赋值为自己的vertexID,表明初始所有顶点均在 UnKnown 集合中,然后把自己的VertexID发送给邻接顶点。2) 若顶点u的VertexID比自己所有邻接顶点都小,则该顶点进
10、入 S 集合中,并发送neighbor-in-set 消息给所有邻接顶点,通知它们退出Unknown集合进入到NotInS集合中,并最后把u置为InActive状态;否则,顶点u继续保持UnKnown状态。3) S集合中顶点的邻接顶点收到neighbor-in-set 消息,则该顶点进入NotInS,并且设置为 Inactive状态。返回继续迭代,直到UnKnown集合为空。(3). 程序中按照顶点value取值不同来区分顶点的类别,具体如下:1) value 等于 vertexID ,表示顶点在 Unknown 集合中; 2) value 等于 -1 ,表示顶点在 S 集合中 3) valu
11、e 等于 -2 ,表示顶点在 NotInS 集合中。当所有顶点进入S或者NotInS集合中,就停止计算,表明已找到一个 MIS。源码如下:package graph.mis;import java.io.IOException;import java.util.Iterator;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;i
12、mport org.apache.hadoop.io.Text;import org.apache.hama.HamaConfiguration;import org.apache.hama.bsp.HashPartitioner;import org.apache.hama.bsp.TextInputFormat;import org.apache.hama.bsp.TextOutputFormat;import org.apache.hama.graph.Edge;import org.apache.hama.graph.GraphJob;import org.apache.hama.gr
13、aph.Vertex;import org.apache.hama.graph.VertexInputReader;public class FindMIS public static class MISVertex extends Vertex Override public void compute(Iterator messages) throws IOException if (getSuperstepCount() = 0) setValue(getVertexID(); sendMessageToNeighbors(getValue(); else if(getValue().get()=-2) voteToHalt();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1