厦门大学林子雨编着Word文件下载.docx

上传人:b****1 文档编号:13308258 上传时间:2022-10-09 格式:DOCX 页数:12 大小:201.70KB
下载 相关 举报
厦门大学林子雨编着Word文件下载.docx_第1页
第1页 / 共12页
厦门大学林子雨编着Word文件下载.docx_第2页
第2页 / 共12页
厦门大学林子雨编着Word文件下载.docx_第3页
第3页 / 共12页
厦门大学林子雨编着Word文件下载.docx_第4页
第4页 / 共12页
厦门大学林子雨编着Word文件下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

厦门大学林子雨编着Word文件下载.docx

《厦门大学林子雨编着Word文件下载.docx》由会员分享,可在线阅读,更多相关《厦门大学林子雨编着Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。

厦门大学林子雨编着Word文件下载.docx

3作业性质1

4作业考核方法1

5作业提交日期与方式1

6作业准备1

6.1、Hama计算框架的安装配置1

6.2、用Hama计算模型实现寻找最大独立集问题算法4

7作业内容9

8实验报告9

附录1:

任课教师介绍9

附录2:

课程教材介绍10

附录3:

中国高校大数据课程公共服务平台介绍11

厦门大学林子雨编著《大数据技术原理与应用》

图计算框架Hama基础操作实践

上机练习说明

E-mail:

ziyulin@个人主页:

1作业题目

图计算框架Hama基础操作实践。

2作业目的

旨在让学生了解Pregel图计算模型,并学会用Pregel的开源实现Hama实现一些基本操作。

3作业性质

课后作业,必做,作为课堂平时成绩。

4作业考核方法

提交上机实验报告,任课老师根据上机实验报告评定成绩。

5作业提交日期与方式

图计算章节内容结束后的下一周周六晚上9点之前提交。

6作业准备

请阅读厦门大学林子雨编著的大数据专业教材《大数据技术原理与应用》(官网:

6.1、Hama计算框架的安装配置

ApacheHama是GooglePregel的开源实现,与Hadoop适合于分布式大数据处理不同,Hama主要用于分布式的矩阵、graph、网络算法的计算。

简单说,Hama是在HDFS上实现的BSP(BulkSynchronousParallel)计算框架,弥补Hadoop在计算能力上的不足。

(1).安装好合适版本的jdk和hadoop,并且进行测试,保证他们能用。

(2).下载hama安装文件,从http:

//hama.apache.org/downloads.html处下载合适的版本,我当时下的是0.6.4版本的。

(3).在用户主目录下创建合适的安装目录文件,我这里是在~下创建了hama文件夹作为安装目录,即~/hama为安装目录。

(4).将下载好的hama-0.6.4.tar.gz拷贝到~/hama中去,并用tarzvxfhama-0.6.4.tar.gz进行解压。

(5).进入hama-0.6.4中的conf文件夹,修改hama-env.sh文件,在其中加入java的home路径,即加入:

ExportJAVA_HOME=/home/wanglianping/java/jdk.1.7.0_91

( 

6).修改 

hama-site.xml文件,这时hama配置的核心文件,具体内容如下:

<

configuration>

<

property>

 

name>

bsp.master.address<

/name>

value>

192.168.91.128:

40000<

/value>

description>

Theaddressofthebspmasterserver.Eitherthe

literalstring"

local"

orahost:

portfordistributedmode

/description>

/property>

fs.default.name<

hdfs:

//192.168.91.128:

9000/<

Thenameofthedefaultfilesystem.Eithertheliteralstring

"

portforHDFS.

hama.zookeeper.quorum<

192.168.91.128<

CommaseparatedlistofserversintheZooKeeperQuorum.

Forexample,"

,"

.

Bydefaultthisissettolocalhostforlocalandpseudo-distributedmodes

ofoperation.Forafully-distributedsetup,thisshouldbesettoafull

listofZooKeeperquorumservers.IfHAMA_MANAGES_ZKissetinhama-env.sh

thisisthelistofserverswhichwewillstart/stopzookeeperon.

hama.zookeeper.property.clientPort<

2181<

/configuration>

其中,bsp.master.address即bsp中的BSPMaster的地址和端口。

fs.default.name这个值要特别注意,是hadoop中nameNode的地址和端口,因为hama要用到hadoop的hdfs分布式文件系统。

剩下的俩个是zookeeper的相关配置。

(7).另外,在conf文件夹下还有一个groomservers文件,这个在分布式环境下配置groomserver的地址,在单机模式下就不用配置了,里面默认值为localhost。

同时,你也可以在~/.bashrc中添加hama的环境变量,这样每次启动就不同转到相应的目录下去了。

(8).启动hadoop,并验证是否启动成功。

命令:

HADOOP_HOME/bin/start-all.sh,如果启动成功,如下:

启动hama,命令:

HAMA_HOME/bin/start-bspd.sh,结果如下:

出现上述结果,则表明hama已经成功启动。

6.2、用Hama计算模型实现寻找最大独立集问题算法

(1).本算法参考Luby'

sclassicparallelalgorithm《asimpleparallelalgorithmformaximalindependentsetproblem》,把顶点分为三类:

1)S:

TheMISbeingconstructed.Startsemptyandgrowsiniterations.

2)NotInS:

VerticesthathaveatleastoneedgetoavertexinSandasaresultcannotbeinS.

3)Unknown:

VerticesthatdonothaveanedgetoanyvertexinSbutarenotyetinS.

(2).Hama模型下MIS(MaximalIndependentSet)算法描述。

1)初始时,把所有顶点的value值赋值为自己的vertexID,表明初始所有顶点均在UnKnown集合中,然后把自己的VertexID发送给邻接顶点。

2)若顶点u的VertexID比自己所有邻接顶点都小,则该顶点进入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)value等于-2,表示顶点在NotInS集合中。

当所有顶点进入S或者NotInS集合中,就停止计算,表明已找到一个MIS。

源码如下:

packagegraph.mis;

importjava.io.IOException;

importjava.util.Iterator;

importorg.apache.hadoop.conf.Configuration;

importorg.apache.hadoop.fs.Path;

importorg.apache.hadoop.io.LongWritable;

importorg.apache.hadoop.io.NullWritable;

importorg.apache.hadoop.io.Text;

importorg.apache.hama.HamaConfiguration;

importorg.apache.hama.bsp.HashPartitioner;

importorg.apache.hama.bsp.TextInputFormat;

importorg.apache.hama.bsp.TextOutputFormat;

importorg.apache.hama.graph.Edge;

importorg.apache.hama.graph.GraphJob;

importorg.apache.hama.graph.Vertex;

importorg.apache.hama.graph.VertexInputReader;

publicclassFindMIS{

publicstaticclassMISVertexextends

Vertex<

LongWritable,NullWritable,LongWritable>

{

@Override

publicvoidcompute(Iterator<

LongWritable>

messages)throwsIOException{

if(getSuperstepCount()==0){

setValue(getVertexID());

sendMessageToNeighbors(getValue());

}else{

if(getValue().get()==-2){

voteToHalt();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1