虚拟化与云计算实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虚拟化与云计算




目录
一、实验目的 (1)
二、实验内容 (1)
三、实验原理 (1)
四、实验步骤及实验结果 (5)
五、实验遇到的问题及其解决方法 (9)
六、实验结论 (10)
一、实验目的
实验一:
1.掌握在Linux上配置iSCSI target服务的方法。

2.掌握在不同的操作系统平台上使用iSCSI initiator的方法。

实验三:
1.掌握在集群上(使用虚拟机模拟)安装部署Hadoop-HDFS的方法。

2.掌握在HDFS运行MapReduce任务的方法
3.理解MapReduce编程模型的原理,初步使用MapReduce模型编程。

二、实验内容
实验一: 配置和使用SAN存储,设置连接IP SAN设备;
实验三: 安装、部署、使用Hadoop-HDFS和配置运行MapReduce程序,使用MapReduce编程。

三、实验原理
实验一:
SAN(Storage Area Network,存储局域网络)的诞生,使存储空间得到更加充分的利用以及管理更加有效。

SAN是一种将存储设备、连接设备和接口集成在一个高速网络中的技术。

SAN本身就是一个存储网络,承担了数据存储任务,SAN 网络与LAN业务网络相隔离,存储数据流不会占用业务网络带宽。

在SAN网络中,所有的数据传输在高速、高带宽的网络中进行,SAN存储实现的是直接对物理硬件的块级存储访问,提高了存储的性能和升级能力。

早期的SAN采用的是光纤通道(FC,Fiber Channel)技术,所以,以前的SAN多指采用光纤通道的存储局域网络,到了iSCSI协议出现以后,为了区分,业界就把SAN分为FC SAN 和IP SAN。

iSCSI(互联网小型计算机系统接口)是一种在TCP/IP上进行数据块传输的标准。

它是由Cisco和IBM两家发起的,并且得到了各大存储厂商的大力支持。

iSCSI 可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行快速的数据存取备份操作。

iSCSI标准在2003年2月11日由IETF(互联网工程任务组)认证通过。

iSCSI继承了两大传统技术:SCSI和TCP/IP协议。

这为iSCSI
的发展奠定了坚实的基础。

基于iSCSI的存储系统只需要不多的投资便可实现SAN存储功能,甚至直接利用现有的TCP/IP网络。

相对于以往的网络存储技术,它解决了开放性、容量、传输速度、兼容性、安全性等问题,其优越的性能使其备受关注与青睐。

在实际工作时,是将SCSI命令和数据封装到TCP/IP包中,然后通过IP网络进行传输,具体的工作流程如下:
(1)iSCSI系统由SCSI适配器发送一个SCSI命令;
(2)命令封装到TCP/IP包中并送入到以太网络;
(3)接收方从TCP/IP包中抽取SCSI命令并执行相关操作;
(4)把返回的SCSI命令和数据封装到TCP/IP包中,将它们发回到发送方;
(5)系统提取出数据或命令,并把它们传回SCSI子系统。

实验三:
1.HDFS指的是Hadoop分布式文件系统,是根据Google的GFS的论文,由Doug Cutting使用Java开发的开源项目。

HDFS本身是Hadoop项目的一部分,为Hadoop 提供了底层的数据存储,以供上层的各种实际应用使用(如Map/Reduce)。

HDFS 是典型的Master/Slave集群架构,由一个NameNode和多个DataNode组成,NameNode只能是一个,扮演着Master的角色,负责对具体存储块的元数据进行保存,如某个存储块具体保存在哪个DataNode上;DataNode可以为多个,扮演着Slave的角色,负责对具体的存储块进行保存,一个相同的存储块根据配置可以保存到多个DataNode上,以保持数据的高可用性。

客户端与HDFS交互时,典型的,会先询问NameNode具体的存储块在哪个DataNode上,然后客户端会直接联系相应的DataNode,来获取或写入数据。

各个DataNode会定时发送心跳至NameNode,以便NameNode了解DataNode的可用状态及存储状态,这样可以保证某一个DataNode挂掉,NameNode可以做相应处理,以保证数据的高可用性。

HDFS的目标就是使用大量的廉价PC机,来维护海量的大数据块,并且保证数据的高可用性,并且HDFS集群会随着更多PC机的加入,而提高数据的存储量(当然这与具体环境的硬盘相关)与吞吐量(当然这与具体环境的网卡带宽相关),单个Hadoop集群一般最大可达2000个节点。

2. MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。

概念"Map(映射)"和"Reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。

他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

当前的软
件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

四、实验步骤及实验结果
实验一:
实验场景:
Linux环境(本次实验使用的是Ubuntu 11.04操作系统)
安装iSCSI initiator软件
实验方式:
两人一组,我在小组中担任客户端角色。

实验详细步骤见实验一手册,下面为实验关键结果截图和实验中的新发现:
1.登录到iSCSI target上
2.检查硬盘情况,此时应该增加了一块新的硬盘:fdisk –l(结果)
预期实验结果和实际结果相同,增加了一块新的硬盘,只是中间在连接时出现了问题,后通过修改节点信息解决了问题,把之前的绝对路径改为简单的字符串,即图中的my。

实验三:
实验场景:
Linux环境(本次实验使用的是Ubuntu 11.04操作系统)
JDK、Openssh-Cilent、Openssh-server、Hadoop、eclipse和hadoop plugin for eclipse 实验方式:
两人一组,部署多机Hadoop-HDFS,并且两人之间变换Master、Slaver角色。

实验详细步骤见实验三手册,下面为实验关键结果截图和实验中的新发现:
1.配置SSH之后发现无法互联,通过查询从网上搜到一些相关的文档,操作如下:
不仅解决了成员互联问题,而且可以设置验证码,完善了功能。

2.安装部署单机伪分布式模式Hadoop-HDFS
格式化HDFS并启动Hadoop,启动后可使用命令jps查看已启动进程
jps结果如下图所示
3.在单机伪分布模式下运行wordcount例子(结果1)
将输出文件从分布式文件系统拷贝到本地文件系统查看
4.安装部署多机Hadoop-HDFS(2-3人为一组,每人需要变换Master、Slaver角
色,假设2台机器组成集群,Master节点为namenode,Slaver节点为datanode)首先简要地介绍集群环境
集群环境中有两个结点,其中1个namenode相当于Master,1个datanode相当于Slaver,它们之间分布在局域网中,相互之间可以ping通。

具体的IP地址为:namenode:222.30.21.15
datanode:222.30.21.230
实验开始我是作为datanode,之后互换角色为namenode,为了节省篇幅,下面将两次的配置归并在一起,既包括namenode的配置也包括datanode的配置。

配置jobtracker
masters文件配置:222.30.21.230(加入namenode的IP地址)
slaves文件配置:222.30.21.15(加入datanode的IP地址)
在多机模式下运行wordcount例子,结果和单机伪并行一样,可参照单机的结果。

5.安装eclipse和hadoop plugin for eclipse
建立wordcount工程,编译示例程序wordcount.java,打包相关class文件,在Hadoop分布式环境下(伪分布模式或者多机模式均可)运行自己打包的wordcount,结果如下(结果2):
编写的MapReduce程序执行结果如下(结果3):
选取页面介绍
页面1(来自实验一):
实现了客户端和服务端共享存储。

页面2(来自实验三):
Master(namenode)和Slaver(datanode)在建立连接之后,Master向Slaver复制数据。

页面3(来自实验三):
在namenode中执行jps,分别列出JobTracker、Jps、SecondaryNamenode和Namenode的对应进程号;
在datanode中执行jps,分别列出Datanode、Jps和TaskTracker的进程号。

页面4(来自实验三):
运行Hadoop自带的wordcount例子
实验一预期花费时间3h,实际花费时间5h
实验三预期花费时间6h,实际花费时间12h
五、实验遇到的问题及其解决方法
实验一:
客户端在连接iSCSI target时失败,之后服务端通过修改/etc/iet/ietd.conf 文件中节点的信息,把之前的绝对路径改为简单的字符串就解决了问题。

实验三:
1.在部署单机伪分布式模式Hadoop-HDFS时,通过JPS指令未发现DataNode,通过上网查询资料了解到,原因是由于进行操作时使用的是Root身份,系统默认会加上-jvm指令导致错误,可以通过切换至普通用户或修改/bin/hadoop文件来解决问题。

2.小组两人无法通过SSH无密码方式访问对方,通过查询上网查阅资料,发现对密钥的指令认识不够全面,学习了一些新的指令操作,在解决问题之外还学会了设置用户验证的方法,增强了访问的安全性。

3.我和同学经过很多方法之后始终无法部署多机Hadoop-HDFS,后来发现原因是在之前的操作中,我们是通过新建一个共同的用户名来保证所有参与集群的机器有相同的用户名,但是实际上我们应该在安装Ubuntu时设置同一用户名,这样所有的集群部署问题就迎刃而解了。

4. 在设计mapreduce程序时,遇到无法将key值按从大到小输出以及无法将key 和value交换位置输出的问题,后来是通过InverseMapper.class可以交换key和
value,并修改parator使得可以按从大到小输出<key,value>对。

六、实验结论
实验感想:
实验一相对而言步骤比较简单,但是通过进行实验一的操作,复习了linux的常用指令,为进行实验三打下了基础。

实验三的步骤比较复杂,实现的模块和功能也比较多,因此在操作中遇到了很多问题。

由于对于实验内容大家都不是特别了解,所以解决问题的方式主要是通过上网查阅资料。

但是在尝试不同解决方案后,导致系统出现混乱,使得已经完成的结果也无法显示,最后不得不重装系统从头再来。

因此,我意识到耐心和细心对于实验的重要性。

实验中难免有问题出现,当问题比较少时我们往往能够轻松应对,但是一旦问题比较多就会显得急躁,我们要学会将问题各个击破,而非踌躇不前。

同时细心也很重要,比如在实验三中我就曾把一个文件夹误删掉导致系统重装,浪费了很多时间和精力,以后要多加注意。

实验收获:
通过实验,了解了Hadoop和MapReduce的知识,同时也加深了对于Linux指令的认识和掌握。

此外,也意识到了团队合作和讨论的必要性。

相关文档
最新文档