hadoo云计算实验指导书.docx

上传人:b****7 文档编号:8801363 上传时间:2023-02-01 格式:DOCX 页数:22 大小:46.10KB
下载 相关 举报
hadoo云计算实验指导书.docx_第1页
第1页 / 共22页
hadoo云计算实验指导书.docx_第2页
第2页 / 共22页
hadoo云计算实验指导书.docx_第3页
第3页 / 共22页
hadoo云计算实验指导书.docx_第4页
第4页 / 共22页
hadoo云计算实验指导书.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

hadoo云计算实验指导书.docx

《hadoo云计算实验指导书.docx》由会员分享,可在线阅读,更多相关《hadoo云计算实验指导书.docx(22页珍藏版)》请在冰豆网上搜索。

hadoo云计算实验指导书.docx

hadoo云计算实验指导书

计算机科学与技术学院

网络计算设计与实现

实验指导书

实验一SOCKET编程

【试验环境】

计算机、TCP/IP协议、VS2005

【实验目的】

1.理解基本TCP/IP协议编程原理;

2.掌握如何利用SOCKET编写网络程序;

3.掌握VS2005编程环境,多线程程序设计等。

【实验要求】

1.编写一个服务端的程序,接收来自客户端的访问请求,并返回相关信息;

2.编写一个客户端程序,向服务端发送连接请求,并显示返回的结果;

3.完善服务端程序,使它能够同时支持多个客户端的请求。

【预备知识】

publicSocketAccept():

为新建连接创建新的Socket。

publicvoidBind(EndPointlocalEP):

使Socket与一个本地终结点相关联。

publicvoidClose():

关闭Socket连接并释放所有关联的资源。

publicvoidConnect(EndPointremoteEP):

建立与远程主机的连接。

注意这个方法有重载方法。

publicvoidDisconnect(boolreuseSocket):

关闭套接字连接并是否允许重用套接字。

publicvoidListen(intbacklog):

将Socket置于侦听状态。

publicintReceive(byte[]buffer):

接收来自绑定的Socket的数据。

注意这个方法有重载方法。

publicintReceiveFrom(byte[]buffer,refEndPointremoteEP):

接收数据报并存储源终结点。

注意这个方法有重载方法。

publicintSend(byte[]buffer):

将数据发送到连接的Socket。

注意这个方法有重载方法。

publicvoidSendFile(stringfileName):

将文件和可选数据异步发送到连接的Socket。

注意这个方法有重载方法。

publicintSendTo(byte[]buffer,EndPointremoteEP):

将数据发送到特定终结点。

注意这个方法有重载方法。

publicvoidShutdown(SocketShutdownhow):

禁用某Socket上的发送和接收。

因为在网络传输时传输的数据都是二进制形式的(表现为字节数组),所以如果要传输类似于中文这样的双字节字符就需要在传输之前用合适的编码转换成字节数组,然后接收方按照发送方的编码将接收到字节数组转换成字符串。

另外,注意接收数据的时候是先声明了一个字节数组,然后将接收到的数据保存到字节数组中,这个方法有个返回值表示实际接收了多少字节数据。

【实验内容】

实现一个服务器端的面向连接的Socket用于接收客户端的请求的话,有如下步骤:

1.首先根据IP地址和端口号实例化一个Socket,注意端口要要大于1024并且不要使用特殊端口号,要大于1024的原因是1024以下的端口号已经被指派了,而1433、3306这样的端口号已经被用作SQLServer和MySQL的默认端口号了,若指定为这些端口号容易发生冲突。

2.接着调用Bind()方法进行绑定,然后再调用Listen()方法用于监听,Listen()方法的参数用于指定监听的队列大小,也就是最多可容纳的等待接受的传入连接数。

3.再调用Accept()方法,调用这个方法之后会是程序处于阻塞状态,直至有客户端连接为止。

当有客户端连接,这个方法将会返回一个新的Socket,使用这个Socket与客户端进行通讯。

4.使用Accept()方法返回的新Socket的Send()方法就可以向客户端发送数据了,还可以使用这个新Socket的Receive()接收客户端的数据。

5.最后终止与客户端会话时,注意使用ShutDown()方法关闭Socket连接,并且使用Close()方法释放所占用的资源。

ServerSocket类代码

SocketThread类代码

使用Socket类编写客户端的Socket程序步骤如下:

1.首先指定远程主机和端口号实例化Socket类,注意连接的端口号一定要与服务器监听的端口号一致。

2.接着调用Connect()方法连接远程主机。

3.连接到远程主机之后就可以调用Send()方法向服务器发送请求了,然后可以调用Receive()方法接收服务器响应数据,注意如果是发送的类似于中文这样的双字节字符串的话,还需要按照服务器响应的字符串编码将字节数组转换成字符串。

Clinet类代码

实验二HTML与XML应用

【试验环境】

配置有windows记事本的计算机设备

【实验目的】

1.通过本实验,使学生能够了解并掌握XMLSchema的定义方法及其用途

2.了解并掌握Schema的基本结构

3.了解并掌握Schema的数据类型

4.了解并掌握Schema的元素声明

5.了解并掌握Schema的属性声明

【实验要求】

1.能参照示例XML文件进行对应的XMLSchema定义

2.能利用Schema对XML文件进行验证

【实验内容】

(1)对以下“个人信息.xml”进行Schema定义(设Schema文件名为“个人信息.xsd”)

xmlversion="1.0"encoding="UTF-8"?

>

--这是一个用XML描述的例子-->

XML实用培训教程

张健飞

27元

科学出版社

北京东皇城根北街16号

100717

XML网页制作彻底研究

陈会安

47元

中国铁道出版社

北京市宣武区右安门西街8号

100054

(2)书写XMLSchema定义头部

xmlversion="1.0"encoding="UTF-8"?

>

--W3C>

annotation>

documentation>

JinYanZhongXMLFileSchemaTest

documentation>

annotation>

[]

schema>

(3)定义bookcaseType类型(添加在[]处)

elementname="bookcase"type="bookcaseType"/>

attributename="type">

simpleType>

restrictionbase="xs:

string">

enumerationvalue="科技"/>

enumerationvalue="教育"/>

restriction>

simpleType>

attribute>

(4)定义bookcase元素(紧随bookcaseType类型定义之后)

complexTypename="bookcaseType">

sequence>

elementname="book"type="bookType"/>

sequence>

complexType>

(5)定义bookType元素类型(里面引用定义authorType,pub-houseType)

complexTypename="bookType">

sequence>

elementname="b-name"type="xs:

string"/>

elementname="author"type="authorType"/>

elementname="price"type="xs:

string"/>

elementname="publishing-house"type="pub-houseType"/>

sequence>

complexType>

(6)定义authorType及pub-houseType元素类型

complexTypename="authorType">

sequence>

elementname="name"type="xs:

string"/>

elementname="E-mail"type="xs:

string"/>

sequence>

complexType>

complexTypename="pub-houseType">

sequence>

elementname="p-name"type="xs:

string"/>

elementname="address"type="xs:

string"/>

elementname="zipcode"type="xs:

string"/>

elementname="E-mail"type="xs:

string"/>

sequence>

complexType>

(7)在XMLSpy中新创建一个基于“个人信息.xsd”的XML文件,体会该方法的方便快捷

(8)在IE中打开带有Schema定义的“个人信息.xsd”,观察符合DTD定义及不符合Schema定义的XML文件显示

实验三基于JXTA的P2P程序设计

【试验环境】

JXTA、Eclipse

【实验目的】

1.理解JXTA的工作原理;

2.掌握如何利用JXTA编写网络程序;

3.掌握Eclipse编程环境等。

【实验要求】

1.编写一个简单的HelloWorld的P2P程序

2.在对等网环境下试验程序。

【实验内容】

JXTA的配置

第一次运行时,在DOS窗口显示"StartingJXTA....",然后出现JXTA的配置界面。

有Basic,Advanced,Rendezvous/Relays

1.Basicsettings:

填入PeerName

2.Advanced:

在高级信息配置的面板中,可以指定错误跟踪到的级别,TCP和HTTP网络都设置成可用.默认的情况下,错误跟踪到的级别设置为userdefault,TCP和HTTP网络都设置成可用.如果处于防火墙或者NAT(网络地址转换)的后面,就必须要使用HTTP的设置了.TCP的设置在默认的情况下,使用9701端口.HTTP的设置在默认的情况下,使用9700端口.如果在防火墙或者NAT之后,就必须选中HTTP的Enabled框.

3.Rendezvous/Relays:

如果在防火墙或NAT之后一定要选中usearelay(Requiredifbehindfirewall/NAT).可单击按钮Downloadrelayandredezvouslists去下载一些可供使用的TCP和HTTPrendezvous以前HTTP的网关列表.也可以直接输入IP地址和端口号,然后单击+按钮来添加Rendezvous或HTTPRelay到列表中.

如果没有自动下载的功能,则按照下图进行配置

程序同目录下会出现一个.jxta的文件夹,其说明如下:

1.PlatformConfig文件:

由JXTA的配置工具生成,是一个符合XML规范的文本文件.

2.jxta.properties文件:

定义了一些jxta的属性.

3.cm目录:

本地的缓冲目录,记录了发现的所有的PeerGroup的.在上例运行后,发现jxta-NetGroup和jxta-WorldGroup.

4.pse目录:

存放Peer用于安全认证的证书信息.

HelloWorld类代码

实验四基于.NET的WebService程序设计

【试验环境】

计算机、VS2005

【实验目的】

1.理解基本WebService的基本编程框架;

2.熟练掌握VS2005编程环境;

3.,多线程程序设计等。

【实验要求】

1.编写一个基于WebService的应用;

2.调试代码并测试运行结果;

3.使用客户端对WebService进行调用。

【实验内容】

在.NET中创建WebService

<%@WebServiceLanguage="C#"class="SecurityWebService"%>

  通知编译器运行WebService模式,还有c#类名

usingSystem;

  SecurityWebService应该继承了WebService类的功能

publicclassSecurityWebService:

WebService

 将默认生成的服务进行改写

运行该程序,并验证结果

在运行的过程中查看Soap协议

在WindowsForms中调用Web服务

在Form上加入两个TextBox,一个Button,双击Button,编写事件。

运行结果:

实验五WCFService程序设计

【试验环境】

计算机、VS2008

【实验目的】

1.理解基本WCFService的基本编程框架;

2.熟练掌握VS2008编程环境;

【实验要求】

1.编写一个基于WCFService的应用;

2.调试代码并测试运行结果;

3.使用客户端对WCFService进行调用。

【基本概念】

1.服务:

一个类库项目,提供对WCF服务的实现。

定义在该项目中的所有WCF服务实现了服务契约;

2.宿主:

一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Services项目和System.ServiceMode程序集;

3.客户端:

一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。

【实验内容】

在本例中Service的功能就是提供一个返回HelloWorld的方法。

在Service项目中添加一个名为IHelloWorldService的接口,并给接口添加相应的契约,代码如下:

将Service项目中的类Class1重命名为HelloWorldService,让该类继承接口IHelloWorldService,并实现方法SayHello。

代码如下:

至此,服务类已经编写好了,编译下该项目,接下来就开始做宿主了,首先在Host项目中添加对Service项目的引用,如下图:

在Host项目中需要初始化ServiceHost,并添加端点,代码如下:

本例中的端点是用程序的方式来编写的,还可以使用配置文件的方式来做。

客户程序将Service项目中的IHelloWorldService接口复制一份到Client项目中,在生成客户代理时用到。

客户端程序代码如下:

所有代码编写完成,先运行Host,再运行Client,会看到结果如下:

?

实验六GoogleAppEngine程序设计

【试验环境】

计算机、AppEngine软件开发包、Python2.5

【实验目的】

1.理解云计算的基本理论知识;

2.掌握AppEngine软件包的基本使用;

3.运用AppEngine进行简单的留言本的开发。

【实验要求】

1.下载AppEngine和Python2.5,;

2.申请AppEngine帐号;

3.编写程序,并在调试完毕后上传到服务器上。

【预备知识】

GoogleAppEngine用于让开发者进行网站应用程序开发或上传已经完成的应用。

该开发包包含:

一个web服务程序,用来模拟AppEngine应用环境;一个本地版的数据存储方案;本地模拟的Google帐号集成;支持使用Api来分析URL和发送邮件。

这个开发包可以运行在所有安装了Python2.5的机器上,并且支持Windows,MacOSX和Linux系统。

GoogleAppEngine应用通过CGI标准协议与服务器通讯.这是一个标准的Http处理流程,Web服务接受到客户端发来的Get或Post请求,web服务器把请求转发给你的应用程序,由应用程序来处理要输出的内容。

webapp应用包含三部分:

一个或多个RequestHandler类用来处理http请求和应答;一个WSGIApplication实例,根据不同的URL请求,将处理交给不同的RequestHandler类实例;一个主过程,通过CGIadaptor方式运行WSGIApplication

【实验内容】

创建一个简单的RequestHandler

首先创建一个名为helloworld的文件夹。

除非特殊说明,以后所有关于这个应用程序的文

件都将放在这个文件夹里面。

在helloworld文件夹里,创建一个新文件helloworld.py,文件内容如下:

class="prettyprint"print‘Content-Type:

text/plain’

print”

print‘Hello,world!

这个Python脚本处理一个request请求,并且设置一个Httpheader,输出一个空行和一段信息Hello,world!

.

创建配置文件:

每个AppEngineapplication都包含一个名为app.yaml的配置文件。

在这个配置文件中,可以设置具体的某个URL需要用哪个Python脚本来处理.现在,在helloworld文件夹中,创建一个新的app.yaml文件,输入以下内容:

application:

helloworld

version:

1

runtime:

python

api_version:

1

handlers:

-url:

/.*

script:

helloworld.py

这个配置文件描述了以下内容:

这个应用程序的标识是helloworld.这个标识需要和你在AppEngine网站上创建的应用程序标识保持一致。

在开发期间你可以使用任何你喜欢的名字,但是上传的时候,必须要和你在AppEngine注册的标识保持一致。

现在,我们把它设置为helloworld.你的应用程序的版本号为1,如果你在上传应用之前修改了这个编号,AppEngine将会自动保留前一个版本的副本,以方便你可以在管理平台中将当前版本恢复成原来的版

本。

该应用运行在python环境,环境版本是1.目前只有Python可选,将来会提供更多的运行环境和开发语言.所有符合正则表达式/.*(所有URL)的请求,都由helloworld.py脚本来处理.该配置文件使用YAML语法.可以在本地AppEngineSDK环境中进行模拟运行测试。

首先,指定应用路径为helloworld目录,使用下面的命令启动测试环境Web服务程序,google_appengine/dev_appserver.pyhelloworld/这个Web服务程序将监听8080端口.你可以在浏览器中输入以下地址进行测试:

创建一个网络记事本

创建guestbook文件夹,包含文件如下:

app.yaml;guestbook.py

图表app.yaml

图表2guestbook.py

注册用户

访问,使用你的Google帐号登录到AppEngine管理平台。

(如果你还没有Google帐号,请先申请一个)为了创建一个新的GAE应用,请点击按钮"CreateanApplication",按照提示注册应用程序ID,应用程序ID的名字必须是唯一的。

创建ID后,你就可以拥有一个这样的URL地址来访问你的WEB应用了.当然,如果你拥有自己的域名的话,也可以将其绑定到你自己的应用。

上传应用程序

执行命令行程序:

appcfg.pyupdatehelloworld/按照提示,输入您自己的Google用户名和密码.现在你已经可以使用如下地址访问您刚刚上传的WEB应用了

实验七Hadoop的安装与配置

【试验环境】

计算机、Java、Hadoop

【实验目的】

1.理解云计算的基本理论知识;

2.理解Hadoop的基本概念

3.掌握如何在Linux上安装Hadoop;

【实验要求】

1.下载Hadoop和JDK;

2.安装SSH;

3.对Linux进行相应配置。

【基础知识】

Hadoop是GoogleMapReduce的一个Java实现。

MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。

就如同java程序员可以不考虑内存泄露一样,MapReduce的run-time系统会解决输入数据的分布细节,跨越机器集群的程序执行调度,处理机器的失效,并且管理机器之间的通讯请求。

这样的模式允许程序员可以不需要有什么并发处理或者分布式系统的经验,就可以处理超大的分布式系统得资源。

程序员的开发步骤:

1.定义Mapper,处理输入的Key-Value对,

2.定义Reducer,可选,对中间结果进行规约,输出最终结果

3.定义InputFormat和OutputFormat,可选,InputFormat将每行为Java类供Mapper函数使用,不定义时默认为String。

4.定义main函数,在里面定义一个Job并运行它

Hadoop的工作过程

一个集群中只有一个NameNode,可以有多个DataNodes;namenode承担数据的位置存储信息,并将存储位置信息告诉client端;得到位置信息后,client端开始写数据;写数据的时候是将数据分块,并存储为多份(一般为3份),放在不同的datanode节点;client先将数据写到第一个节点,在第一个节点接收数据的同时,又将它所接收的

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

当前位置:首页 > 高中教育 > 高中教育

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

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