hadoop云计算实验指导书(XX).doc_第1页
hadoop云计算实验指导书(XX).doc_第2页
hadoop云计算实验指导书(XX).doc_第3页
hadoop云计算实验指导书(XX).doc_第4页
hadoop云计算实验指导书(XX).doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

hadoop云计算实验指导书(XX) 计算机科学与技术学院网络计算设计与实现实验指导书实验一SOCKET编程【试验环境】计算机、TCP/IP协议、VSxx【实验目的】1理解基本TCP/IP协议编程原理;2掌握如何利用SOCKET编写网络程序;3掌握VSxx编程环境,多线程程序设计等。 【实验要求】1编写一个服务端的程序,接收客户端的访问请求,并返回相关信息;2编写一个客户端程序,向服务端发送连接请求,并显示返回的结果;3完善服务端程序,使它能够同时支持多个客户端的请求。 【预备知识】p ublicSocket Aept()为新建连接创建新的Socket。 public voidBind(EndPoint localEP)使Socket与一个本地终结点相关联。 public voidClose()关闭Socket连接并释放所有关联的资源。 public voidConnect(EndPoint remoteEP)建立与远程主机的连接。 注意这个方法有重载方法。 public voidDisconnect(bool reuseSocket)关闭套接字连接并是否允许重用套接字。 public voidListen(int backlog)将Socket置于侦听状态。 public intReceive(bytebuffer)接收绑定的Socket的数据。 注意这个方法有重载方法。 public intReceiveFrom(bytebuffer,ref EndPoint remoteEP)接收数据报并存储源终结点。 注意这个方法有重载方法。 public intSend(bytebuffer)将数据发送到连接的Socket。 注意这个方法有重载方法。 public voidSendFile(string fileName)将文件和可选数据异步发送到连接的Socket。 注意这个方法有重载方法。 public intSendTo(bytebuffer,EndPointremoteEP)将数据发送到特定终结点。 注意这个方法有重载方法。 public voidShutdown(SocketShutdown how)禁用某Socket上的发送和接收。 因为在网络传输时传输的数据都是二进制形式的(表现为字节数组),所以如果要传输类似于中文这样的双字节字符就需要在传输之前用合适的编码转换成字节数组,然后接收方按照发送方的编码将接收到字节数组转换成字符串。 另外,注意接收数据的时候是先声明了一个字节数组,然后将接收到的数据保存到字节数组中,这个方法有个返回值表示实际接收了多少字节数据。 【实验内容】实现一个服务器端的面向连接的Socket用于接收客户端的请求的话,有如下步骤1.首先根据IP地址和端口号实例化一个Socket,注意端口要要大于1024并且不要使用特殊端口号,要大于1024的原因是1024以下的端口号已经被指派了,而 1433、3306这样的端口号已经被用作SQL Server和MySQL的默认端口号了,若指定为这些端口号容易发生冲突。 2.接着调用Bind()方法进行绑定,然后再调用Listen()方法用于监听,Listen()方法的参数用于指定监听的队列大小,也就是最多可容纳的等待接受的传入连接数。 3.再调用Aept()方法,调用这个方法之后会是程序处于阻塞状态,直至有客户端连接为止。 当有客户端连接,这个方法将会返回一个新的Socket,使用这个Socket与客户端进行通讯。 4.使用Aept()方法返回的新Socket的Send()方法就可以向客户端发送数据了,还可以使用这个新Socket的Receive()接收客户端的数据。 5.最后终止与客户端会话时,注意使用ShutDown()方法关闭Socket连接,并且使用Close()方法释放所占用的资源。 ServerSocket类代码SocketThread类代码使用Socket类编写客户端的Socket程序步骤如下1.首先指定远程主机和端口号实例化Socket类,注意连接的端口号一定要与服务器监听的端口号一致。 2.接着调用Connect()方法连接远程主机。 3.连接到远程主机之后就可以调用Send()方法向服务器发送请求了,然后可以调用Receive()方法接收服务器响应数据,注意如果是发送的类似于中文这样的双字节字符串的话,还需要按照服务器响应的字符串编码将字节数组转换成字符串。 Cli类代码实验二L HTML与与L XML应用【试验环境】配置有windows记事本的计算机设备【实验目的】1.通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途2.了解并掌握Schema的基本结构3.了解并掌握Schema的数据类型4.了解并掌握Schema的元素声明5.了解并掌握Schema的属性声明【实验要求】1.能参照示例XML文件进行对应的XML Schema定义2.能利用Schema对XML文件进行验证【实验内容】 (1)对以下“个人信息.xml”进行Schema定义(设Schema文件名为“个人信息.xsd”)XML实用培训教程张健飞zjf163.27元科学出版社 (2)书写XML Schema定义头部JinYanZhong XMLFile SchemaTest (3)定义bookcaseType类型(添加在处) (4)定义bookcase元素(紧随bookcaseType类型定义之后) (5)定义bookType元素类型(里面引用定义authorType,pub-houseType) (6)定义authorType及pub-houseType元素类型 (7)在XMLSpy中新创建一个基于“个人信息.xsd”的XML文件,体会该方法的方便快捷 (8)在IE中打开带有Schema定义的“个人信息.xsd”,观察符合DTD定义及不符合Schema定义的XML文件显示实验三基于JXTA的的P P2P程序设计【试验环境】JXTA、Eclipse【实验目的】1理解JXTA的工作原理;2掌握如何利用JXTA编写网络程序;3掌握Eclipse编程环境等。 【实验要求】1.编写一个简单的Hello World的P2P程序2.在对等网环境下试验程序。 【实验内容】JXTA的配置第一次运行时,在DOS窗口显示Starting JXTA.,然后出现JXTA的配置界面。 有Basic,Advanced,Rendezvous/Relays1.Basic settings填入Peer Name2.Advanced在高级信息配置的面板中,可以指定错误跟踪到的级别,TCP和网络都设置成可用.默认的情况下,错误跟踪到的级别设置为user default,TCP和网络都设置成可用.如果处于防火墙或者NAT(网络地址转换)的后面,就必须要使用的设置了.TCP的设置在默认的情况下,使用9701端口.的设置在默认的情况下,使用9700端口.如果在防火墙或者NAT之后,就必须选中的Enabled框.3.Rendezvous/Relays如果在防火墙或NAT之后一定要选中use arelay(Required ifbehind firewall/NAT).可单击按钮Download relayand redezvouslists去下载一些可供使用的TCP和 rendezvous以前的网关列表.也可以直接输入IP地址和端口号,然后单击+按钮来添加Rendezvous或 Relay到列表中.如果没有自动下载的功能,则按照下图进行配置程序同目录下会出现一个.jxta的文件夹,其说明如下1.PlatformConfig文件由JXTA的配置工具生成,是一个符合XML规范的文本文件.2.perties文件:定义了一些jxta的属性.3.cm目录:本地的缓冲目录,记录了发现的所有的PeerGroup的.在上例运行后,发现jxta-NetGroup和jxta-WorldGroup.4.pse目录:存放Peer用于安全认证的证书信息.HelloWorld类代码实验四基于.NET的的e Web Service程序设计【试验环境】计算机、VSxx【实验目的】1理解基本Web Service的基本编程框架;2熟练掌握VSxx编程环境;3,多线程程序设计等。 【实验要求】1编写一个基于Web Service的应用;2调试代码并测试运行结果;3使用客户端对Web Service进行调用。 【实验内容】在.NET中创建Web Service%WebService Language=C#class=SecurityWebService%通知编译器运行Web Service模式,还有c#类名using System;using System.Web.Services;SecurityWebService应该继承了WebService类的功能public classSecurityWebService:WebService将默认生成的服务进行改写运行该程序,并验证结果在运行的过程中查看Soap协议在Windows Forms中调用Web服务新建Windows Forms工程,注意上面服务不要关。 项目-添加服务引用,地址中输入Web服务的地址,上例localhost:3765/WebSite1/Service.asmx,如果Web服务已经发布,请填写发布的地址。 在Form上加入两个TextBox,一个Button,双击Button,编写事件。 运行结果实验五e WCF Service程序设计【试验环境】计算机、VSxx【实验目的】1理解基本WCF Service的基本编程框架;2熟练掌握VSxx编程环境;【实验要求】1编写一个基于WCF Service的应用;2调试代码并测试运行结果;3使用客户端对WCFService进行调用。 【基本概念】1.服务一个类库项目,提供对WCF服务的实现。 定义在该项目中的所有WCF服务实现了服务契约;2.宿主一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Services项目和System.ServiceMode程序集;3.客户端一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。 【实验内容】创建一个空的解决方案命名为WCFDemo,在该解决方案中创建两个控制台项目和一个类库项目,分别为Client、Host和Service。 在这三个项目中分别引用程序集System.ServiceModel,另外在Service项目中引用程序集using System.Runtime.Serialization在本例中Service的功能就是提供一个返回HelloWorld的方法。 在Service项目中添加一个名为IHelloWorldService的接口,并给接口添加相应的契约,代码如下将Service项目中的类Class1重命名为HelloWorldService,让该类继承接口IHelloWorldService,并实现方法SayHello。 代码如下至此,服务类已经编写好了,编译下该项目,接下来就开始做宿主了,首先在Host项目中添加对Service项目的引用,如下图在Host项目中需要初始化ServiceHost,并添加端点,代码如下:本例中的端点是用程序的方式来编写的,还可以使用配置文件的方式来做。 客户程序将Service项目中的IHelloWorldService接口复制一份到Client项目中,在生成客户代理时用到。 客户端程序代码如下所有代码编写完成,先运行Host,再运行Client,会看到结果如下实验六e Google AppEngine程序设计【试验环境】计算机、AppEngine软件开发包、Python2.5【实验目的】1理解云计算的基本理论知识;2掌握AppEngine软件包的基本使用;3运用AppEngine进行简单的留言本的开发。 【实验要求】1下载AppEngine和Python2.5,;2申请AppEngine帐号;3编写程序,并在调试完毕后上传到服务器上。 【预备知识】Google App Engine用于让开发者进行网站应用程序开发或上传已经完成的应用。 该开发包包含一个web服务程序,用来模拟App Engine应用环境;一个本地版的数据存储方案;本地模拟的Google帐号集成;支持使用Api来分析URL和发送邮件。 这个开发包可以运行在所有安装了Python2.5的机器上,并且支持Windows,Mac OSX和Linux系统。 GoogleApp Engine应用通过CGI标准协议与服务器通讯.这是一个标准的Http处理流程,Web服务接受到客户端发来的Get或Post请求,web服务器把请求转发给你的应用程序,由应用程序来处理要输出的内容。 webapp应用包含三部分一个或多个RequestHandler类用来处理请求和应答;一个WSGIApplication实例,根据不同的URL请求,将处理交给不同的RequestHandler类实例;一个主过程,通过CGI adaptor方式运行WSGIApplication【实验内容】创建一个简单的Request Handler首先创建一个名为helloworld的文件夹。 除非特殊说明,以后所有关于这个应用程序的文件都将放在这个文件夹里面。 在helloworld文件夹里,创建一个新文件helloworld.py,文件内容如下class=prettyprintprintContent-Type:text/plainprint”printHello,world!这个Python脚本处理一个request请求,并且设置一个Http header,输出一个空行和一段信息Hello,world!.创建配置文件每个App Engineapplication都包含一个名为app.yaml的配置文件。 在这个配置文件中,可以设置具体的某个URL需要用哪个Python脚本来处理.现在,在helloworld文件夹中,创建一个新的app.yaml文件,输入以下内容application:helloworld version:1runtime:python api_version:1handlers:-url:/.*script:helloworld.py这个配置文件描述了以下内容这个应用程序的标识是helloworld.这个标识需要和你在App Engine网站上创建的应用程序标识保持一致。 在开发期间你可以使用任何你喜欢的名字,但是上传的时候,必须要和你在App Engine注册的标识保持一致。 现在,我们把它设置为helloworld.你的应用程序的版本号为1,如果你在上传应用之前修改了这个编号,App Engine将会自动保留前一个版本的副本,以方便你可以在管理平台中将当前版本恢复成原来的版本。 该应用运行在python环境,环境版本是1.目前只有Python可选,将来会提供更多的运行环境和开发语言.所有符合正则表达式/.*(所有URL)的请求,都由helloworld.py脚本来处理.该配置文件使用YAML语法.可以在本地AppEngineSDK环境中进行模拟运行测试。 首先,指定应用路径为helloworld目录,使用下面的命令启动测试环境Web服务程序,google_appengine/dev_appserver.py helloworld/这个Web服务程序将监听8080端口.你可以在浏览器中输入以下地址进行测试:localhost:8080/创建一个网络记事本创建guestbook文件夹,包含文件如下app.yaml;guestbook.py图表app.yaml图表2guestbook.py注册用户访问appengine.google./,使用你的Google帐号登录到AppEngine管理平台。 (如果你还没有Google帐号,请先申请一个)为了创建一个新的GAE应用,请点击按钮Create anApplication,按照提示注册应用程序ID,应用程序ID的名字必须是唯一的。 创建ID后,你就可以拥有一个applicationid.appspot./这样的URL地址来访问你的WEB应用了.当然,如果你拥有自己的域名的话,也可以将其绑定到你自己的应用。 上传应用程序执行命令行程序:appcfg.py updatehelloworld/按照提示,输入您自己的Google用户名和密码.现在你已经可以使用如下地址访问您刚刚上传的WEB应用了application-id.appspot.实验七Hadoop的安装与配置【试验环境】计算机、Java、Hadoop【实验目的】1理解云计算的基本理论知识;2理解Hadoop的基本概念3掌握如何在Linux上安装Hadoop;【实验要求】1下载Hadoop和JDK;2安装SSH;3对Linux进行相应配置。 【基础知识】Hadoop是Google MapReduce的一个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先将数据写到第一个节点,在第一个节点接收数据的同时,又将它所接收的数据推送到第二个,第二个推送到第三个节点,如果有多个节点,依次类推;从图中可以知道NameNode不参与数据块的IO的。 ?NameNode是一个通常在HDFS实例中的单独机器上运行的软件。 它负责管理文件系统名称空间和控制外部客户机的访问。 NameNode决定是否将文件映射到DataNode上的复制块上。 对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。 注意,这里需要您了解集群架构。 实际的I/O事务并没有经过NameNode,只有表示DataNode和块的文件映射的元数据经过NameNode。 当外部客户机发送请求要求创建文件时,NameNode会以块标识和该块的第一个副本的DataNode IP地址作为响应。 这个NameNode还会通知其他将要接收该块的副本的DataNode。 NameNode在一个称为FsImage的文件中存储所有关于文件系统名称空间的信息。 这个文件和一个包含所有事务的记录文件(这里是EditLog)将存储在NameNode的本地文件系统上。 FsImage和EditLog文件也需要复制副本,以防文件损坏或NameNode系统丢失。 ?NameNode也是一个通常在HDFS实例中的单独机器上运行的软件。 Hadoop集群包含一个NameNode和大量DataNode。 DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。 Hadoop的一个假设是机架内部节点之间的传输速度快于机架间节点的传输速度。 DataNode响应HDFS客户机的读写请求。 它们还响应创建、删除和复制NameNode的块的命令。 NameNode依赖每个DataNode的定期心跳(heartbeat)消息。 每条消息都包含一个块报告,NameNode可以根据这个报告验证块映射和其他文件系统元数据。 如果DataNode不能发送心跳消息,NameNode将采取修复措施,重新复制在该节点上丢失的块。 ?文件操作可见,HDFS并不是一个万能的文件系统。 它的主要目的是支持以流的形式访问写入的大型文件。 如果客户机想将文件写到HDFS上,首先需要将该文件缓存到本地的临时存储。 如果缓存的数据大于所需的HDFS块大小,创建文件的请求将发送给NameNode。 NameNode将以DataNode标识和目标块响应客户机。 同时也通知将要保存文件块副本的DataNode。 当客户机开始将临时文件发送给第一个DataNode时,将立即通过管道方式将块内容转发给副本DataNode。 客户机也负责创建保存在相同HDFS名称空间中的校验和(checksum)文件。 在最后的文件块发送之后,NameNode将文件创建提交到它的持久化元数据存储(在EditLog和FsImage文件)。 【实验步骤】安装JDK (1)下载安装JDK确保计算机联网之后命令行输入下面命令安装JDK sudoapt-get installsun-java6-jdk (2)配置计算机Java环境打开/etc/profile,在文件最后输入下面内容export JAVA_HOME=(Java安装目录)export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATHexport PATH=$JAVA_HOME/:PATH (3)验证Java是否安装成功输入java-version,输出Java版本信息即为安装成功。 安装配置SSH (1)下载安装SSH同样在命令行输入下面命令安装SSH sudoapt-get installssh (2)配置无密码登录本机在命令行输入下面两条命令$ssh-keygen-t rsa-P-f/.ssh/id_rsa直接回车,完成后会在/.ssh/生成两个文件id_rsa和id_rsa.pub;这两个成对出现,类似钥匙和锁。 再把id_rsa.pub追加到授权key里面(当前并没有authorized_keys文件)$cat/.ssh/id_rsa.pub/.ssh/authorized_keys验证SSH是否安装成功输入ssh localhost。 如果显示本机登录成功就表明安装成功。 关闭防火墙$sudo ufwdisable注意这步非常重要,如果不关闭,会出现找不到datanode的问题安装运行Hadoop(以0.20.2版本为例) (1)下载Hadoop在.apache/dyn/closer.cgi/hadoop/core/页面上下载Hadoop。 (2)安装配置Hadoop单节点配置安装单节点的Hadoop无需配置,在这种方式下,Hadoop被认作为一个单独的Java进程。 伪分布配置伪分布的Hadoop是只有一个节点的集群。 在这个集群中,计算机既是master也是slave,即使namenode也是datanode,既是jobtracker也是tasktracker。 配置的过程如下 1、进入conf文件夹修改下面的文件。 Hadoop-env.sh中加入下面内容export JAVA_HOME=(JAVA安装目录)core-site.xml文件内容修改为下面内容hadoop.tmp.dir/h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论