云计算实验报告书文档格式.docx

上传人:b****3 文档编号:13787433 上传时间:2022-10-13 格式:DOCX 页数:11 大小:511.24KB
下载 相关 举报
云计算实验报告书文档格式.docx_第1页
第1页 / 共11页
云计算实验报告书文档格式.docx_第2页
第2页 / 共11页
云计算实验报告书文档格式.docx_第3页
第3页 / 共11页
云计算实验报告书文档格式.docx_第4页
第4页 / 共11页
云计算实验报告书文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

云计算实验报告书文档格式.docx

《云计算实验报告书文档格式.docx》由会员分享,可在线阅读,更多相关《云计算实验报告书文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

云计算实验报告书文档格式.docx

/*在map中先区分输入行属于左表还是右表,然后对两列值进行分割,

*保存连接列在key值,剩余列和左右表标志在value中,最后输出

*/

publicstaticclassMapextendsMapper<

Object,Text,Text,Text>

{

//实现map函数

publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedException{

Stringline=value.toString();

//每行文件

Stringrelationtype=newString();

//左右表标识

//输入文件首行,不处理

if(line.contains("

factoryname"

)==true||line.contains("

addressed"

)==true){

return;

}

//输入的一行预处理文本

StringTokenizeritr=newStringTokenizer(line);

Stringmapkey=newString();

Stringmapvalue=newString();

inti=0;

while(itr.hasMoreTokens()){

//先读取一个单词

Stringtoken=itr.nextToken();

//判断该地址ID就把存到"

values[0]"

if(token.charAt(0)>

='

0'

&

token.charAt(0)<

9'

){

mapkey=token;

if(i>

0){

relationtype="

1"

;

}else{

2"

continue;

//存工厂名

mapvalue+=token+"

"

i++;

//输出左右表

context.write(newText(mapkey),newText(relationtype+"

+"

+mapvalue));

/*reduce解析map输出,将value中数据按照左右表分别保存,

  *然后求出笛卡尔积,并输出。

publicstaticclassReduceextendsReducer<

Text,Text,Text,Text>

//实现reduce函数

publicvoidreduce(Textkey,Iterable<

Text>

values,Contextcontext)throwsIOException,InterruptedException{

//输出表头

if(0==time){

context.write(newText("

),newText("

addressname"

));

time++;

intfactorynum=0;

String[]factory=newString[10];

intaddressnum=0;

String[]address=newString[10];

Iteratorite=values.iterator();

while(ite.hasNext()){

Stringrecord=ite.next().toString();

intlen=record.length();

inti=2;

if(0==len){continue;

//取得左右表标识

charrelationtype=record.charAt(0);

//左表

if('

1'

==relationtype){

factory[factorynum]=record.substring(i);

factorynum++;

//右表

2'

address[addressnum]=record.substring(i);

addressnum++;

//求笛卡尔积

if(0!

=factorynum&

0!

=addressnum){

for(intm=0;

m<

factorynum;

m++){

for(intn=0;

n<

addressnum;

n++){

//输出结果

context.write(newText(factory[m]),

newText(address[n]));

publicstaticvoidmain(String[]args)throwsException{

Configurationconf=newConfiguration();

//conf.set("

mapred.job.tracker"

"

192.168.1.2:

9001"

);

//String[]ioArgs=newString[]{"

MTjoin_in"

MTjoin_out"

};

String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();

if(otherArgs.length!

=2){

System.err.println("

Usage:

MultipleTableJoin<

in>

<

out>

"

System.exit

(2);

Jobjob=newJob(conf,"

MultipleTableJoin"

job.setJarByClass(MTjoin.class);

//设置Map和Reduce处理类

job.setMapperClass(Map.class);

job.setReducerClass(Reduce.class);

//设置输出类型

job.setOutputKeyClass(Text.class);

job.setOutputValueClass(Text.class);

//设置输入和输出目录

FileInputFormat.addInputPath(job,newPath(otherArgs[0]));

FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));

System.exit(job.waitForCompletion(true)?

0:

1);

}

 

三、主要仪器设备及耗材

Ubuntu、Hadoop、PC

第二部分:

实验调试与结果分析(可加页)

一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

1.调试方法描述

以下是部分核心Hadoop的调试过程截图

(1)主节点:

namenode

(2)配置jdk:

一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)

(3)配置ssh:

(4)配置Hadoop

2.实验输入数据记录

输入两个txt文件:

代表工厂表的文件(factory.txt)和代表地址表的文件(adsress.txt)

3.实验输出数据记录

运行过程输入的命令如下所示:

删除已经存在的output文件夹(包括子目录):

hadoopfs-rmroutput

在hadoop指定目录内创建新目录:

hadoopfs-mkdirinput

将factory.txt文件夹存储至hadoop:

hadoopfs-putfactoryinput

将address.txt文件夹存储至hadoop:

hadoopfs-putaddressinput

运行已经打包好的MTJoin.java文件:

hadoopjarMTJoin.jarMTJoininputoutput

查看运行结果:

hadoopfs-catoutput/part-r-00000

输入查看结果命令就会按要求输出“工厂名——地址名”表,按工厂名排序输出。

二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)

1.结果描述

输入工厂表对应的文件factory.txt和地址表对应的文件address.txt,则按要求输出了“工厂名——地址名”表。

完成了实验要求。

2.实验现象分析

在配置Hadoop的过程中遇到了很多问题,因为对Hadoop的不熟悉导致多次重启系统,但是最后还是较好的完成了实现,在实验的规程中并没有出现过于严重的问题。

3.影响因素讨论

首先我们必须完成Hadoop的集群配置:

安装Linux系统,推荐Ubuntu14.03,建议直接使用hadoop作为用户安装、配置jdk、更改环境变量、配置ssh、用jps验证集群是否配置成功,使用多台计算机连接主节点和多个次节点完成多台计算机的并行分布。

这些配置的过程对于该实验是非常重要的,只有搭建好了Hadoop才能完成该实验。

同时设计好数据文件也会直接影响数据的输出。

4.算法分析(包括时间和空间)

若工厂表长度为N,地址表的长度为M,则时间复杂度为O(N*M),空间复杂度为O

(1)。

二、实验小结、建议及体会

多表关联和单表关联相似,都类似于数据库中的自然连接。

相比单表关联,多表关联的左右表和连接列更加清楚。

所以可以采用和单表关联的相同的处理方式,map识别出输入的行属于哪个表之后,对其进行分割,将连接的列值保存在key中,另一列和左右表标识保存在value中,然后输出。

reduce拿到连接结果之后,解析value内容,根据标志将左右表内容分开存放,然后求笛卡尔积,最后直接输出。

在进行该多表关联之前我们必须完成Hadoop的集群配置:

安装Linux系统,推荐U

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

当前位置:首页 > 初中教育 > 语文

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

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