虚拟化与云计算课程实验报告-Hadoop平台搭建_第1页
虚拟化与云计算课程实验报告-Hadoop平台搭建_第2页
虚拟化与云计算课程实验报告-Hadoop平台搭建_第3页
虚拟化与云计算课程实验报告-Hadoop平台搭建_第4页
虚拟化与云计算课程实验报告-Hadoop平台搭建_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

..整理范本整理范本.整理范本虚拟化与云计算实验报告..整理范本整理范本.整理范本目录一、实验目标 1二、实验内容 1三、实验步骤 1四、实验遇到的问题及其解决方法 1五、实验结论 1..整理范本整理范本.整理范本一、实验目的实验题目:配置和使用SAN存储掌握在Linux上配置iSCSItarget服务的方法。实验题目:Hadoop&MapReduce安装、部署、使用Hadoop-HDFS配置运行MapReduce程序,使用MapReduce编程二、实验内容实验题目:配置和使用SAN存储配置在Linux上iSCSI实现两台机器间的共享存储。实验题目:Hadoop&MapReduce掌握在集群上(使用虚拟机模拟)安装部署Hadoop-HDFS的方法。掌握在HDFS运行MapReduce任务的方法。理解MapReduce编程模型的原理,初步使用MapReduce模型编程。三、实验步骤及实验结果实验题目:配置和使用SAN存储在实验1中我作为主机提供共享存储空间,实验地点是在机房,但是由于我当时没有截图所以回寝室在自己的电脑上重做,以下为主机步骤:1.1 确定以root身份执行以下步骤sudosu–..整理范本整理范本.整理范本1.2 安装iSCSITarget软件1.3 修改/etc/default/iscsitarget ISCSITARGET_ENABLE=true1.4 创建共享存储 共享存储可以是logicalvolumes,imagefiles,harddrives,harddrivepartitionsorRAIDdevices 例如使用imagefile的方法,创建一个10G大小的LUN: ddif=/dev/zeroof=/storage/lun1.imgbs=1024kcount=10240..整理范本整理范本.整理范本修改/etc/iet/ietd.conf添加: Target.example:storage.lun1IncomingUser[username][password]OutgoingUserLun0Path=/storage/lun1.img,Type=fileioAliasLUN1#MaxConnections6 1.6 修改/etc/iet/initiators.allow 如果只允许特定IP的initiator访问LUN,则如下设置 .example:storage.lun100 如果任意initiator均可以访问,则: ALLALL..整理范本整理范本.整理范本 1.6 启动/重启动iSCSItarget /etc/init.d/iscsitargetstart /etc/init.d/iscsitargetrestart实验题目:Hadoop&MapReduce..整理范本整理范本.整理范本安装JDK——在实验中安装为OpenJDK6Runtime安装openssh-server,命令为:sudoapt-getinstallopenssh-server,并检查sshserver是否已经启动:ps-e|grepssh,如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/sshstart,如果看到sshd那说明ssh-server已经启动了。免密码ssh设置,确认能否不输入口令就用ssh登录localhost:sshlocalhost如果不输入口令就无法用ssh登陆localhost,执行下面的命令:$ssh-keygen-trsa-f~/.ssh/id_rsacat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys再次执行sshlocalhost,完成后请登入确认不用输入密码..整理范本整理范本.整理范本安装Hadoop解压Hadoop安装包到安装目录,在本实验中我新建了一个用户hadoop并把hadoop解压到home/hadoop文件夹下,在伪分布模式下使用的版本为0.20.203,在分布模式下因为要与Eclipse兼容所以最终使用版本为0.20.2,下面部分截图为版本为0.20.203。并编辑conf/hadoop-env.sh,将JAVA_HOME设置为Java安装根路径运行运行bin目录下的hadoop,如显示hadoop脚本的使用文档,说明安装已经完成。如下图所示:..整理范本整理范本.整理范本安装部署单机伪分布式模式Hadoop-HDFSHadoop可以在单节点上以伪分布式模式运行。编辑/conf/core-site.xml<configuration><property><name></name><value>hdfs://localhost:9000</value></property><property><name>hadoop.tmp.dir</name><value>/tmp/hadoop/hadoop-${}</value></property></configuration>..整理范本整理范本.整理范本编辑/opt/hadoop/conf/hdfs-site.xml<configuration><property><name>dfs.replication</name><value>1</value></property></configuration>编辑/opt/hadoop/conf/mapred-site.xml<configuration><property><name>mapred.job.tracker</name><value>localhost:9001</value>..整理范本整理范本.整理范本</property></configuration>格式化HDFSbin/hadoopnamenode–format启动Hadoop,启动后可使用命令jps查看已启动进程,观察是否namenode、datanode已启动,关闭所有服务,使用命令stop-all.sh,bin/start-all.sh浏览NameNode和JobTracker的网络接口,地址默认为:NameNode-http://localhost:50070/JobTracker-http://localhost:50030/..整理范本整理范本.整理范本下面尝试在单机伪分布模式下运行wordcount样例程序将输入文件拷贝到分布式文件系统bin/hadoopfs-puthome/lee/桌面testfileinput运行Hadoop自带的wordcount例子bin/hadoopjarhadoop-examples-.jarwordcountinputoutput..整理范本整理范本.整理范本将输出文件从分布式文件系统拷贝到本地文件系统查看bin/hadoopfs-getoutput/home/lee/文档cat/home/lee/文档/output/*安装部署多机Hadoop-HDFS这个部署多机的实验在实验室没有做完,最后实在宿舍完成的,节点为两个,使用系统为wubi安装的Ubuntu,所以不需要桥接方式(因为有固定IP),以下步骤为我做为Master时的实验截图:本机名为node1,另外一台机器为node2,两台机器均建立一个名为hadoop的管理员用户用于统一部署安装hadoop。编辑文件/etc/hosts..整理范本整理范本.整理范本ubuntu替换为node1编辑/etc/hostname文件删除该文件的所有内容,添加node1运行命令hostnamenode1指定IP地址编辑文件/etc/network/interfacesautoeth0ifaceeth0inetstatic..整理范本整理范本.整理范本address96netmask重启网络服务sudo/etc/init.d/networkingrestart查看IP地址ifconfig修改/etc/hosts文件node1中:96node13node2node2中:96node13node2..整理范本整理范本.整理范本配置从node1无需输入密码ssh登录node1、node2,命令如下:首先在node1、node2下建立home/hadoop/.ssh文件夹在node1(master)上:$ssh-keygen-trsa $cat.ssh/id_rsa.pub>>.ssh/authorized_keys这两行命令生成密钥并将公钥导出到authorized_keys中,然后将此文件拷贝到node2(slaves)中的相同文件夹下,因为通过网络命令拷贝比较困难所以我在这里用U盘拷贝的,之后就可以成功无密码登录node2..整理范本整理范本.整理范本编辑/conf/core-site.xml//此处为了方便查找我更改了hadoop.tmp.dir的文件目录,改为/home/hadoop/tmp<configuration><property><name></name><value>hdfs://node1:9000</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/tmp</value></property></configuration>编辑/opt/hadoop/conf/hdfs-site.xml,其中//这里我们将dfs.data.dir改为/home/hadoop/data//将.dir的默认文件夹改为/home/hadoop/name<configuration><property><name>.dir</name><value>/home/hadoop/name</value></property><property><name>dfs.data.dir</name><value>/home/hadoop/data</value></property><property>..整理范本整理范本.整理范本<name>dfs.replication</name><value>2</value></property></configuration>编辑/opt/hadoop/conf/mapred-site.xml<configuration><property><name>mapred.job.tracker</name><value>node1:9001</value></property></configuration>配置jobtrackermasters文件配置如下:node1slaves文件配置如下:node2在主节点编辑hadoop的配置之后,将其拷贝到node2的对应目录(U盘)格式化HDFSbin/hadoopnamenode-format..整理范本整理范本.整理范本启动Hadoop,启动后可使用命令jps查看namenode和datanode上已启动进程,观察是否namenode、datanode已启动,关闭所有服务,使用命令stop-all.sh,再分别按顺序在node1和node2上开启namenode(node1)、datanode(node2)、jobtracker(node1)、tasktracker(node2),注意我在此处只能分别开启,如果使用start-all.sh全部自动开启的话启动所有节点正常但是无活节点可用,可能与启动顺序有关,成功之后截图如下:浏览NameNode和JobTracker的网络接口,地址默认为:NameNode-http://node1:50070/JobTracker-http://node1:50030/..整理范本整理范本.整理范本安装eclipse和hadooppluginforeclipse这里经过反复测试发下到现在为止只使用了eclipse3.3和hadoop0.20.2-plugin插件可以配置成功,最新版本均不能配置成功。 具体做法是下载eclipse解压之后将hadoop安装路径下的contrib的下的jar插件复制到eclipse文件夹下的plugins文件夹下即可在eclipse下成功安装插件。..整理范本整理范本.整理范本新建MapReduce工程,并在eclipse中下方的Map/ReduceLocations下新建刚刚添加好的node1并配置如下:..整理范本整理范本.整理范本最后将写好的测试文件testfile上传到DFSLocations分布式文件系统中,并设置好文件的输入输出参数(如下图,输入输出文件/文件夹均在DFS中)。这里我根据要求将老师给的WordCount.java做了一定的修改,具体来说就是将第一个Job输出的文本文件作为输入,再次读入并交换<keys,values>为<values,keys>(用以是以词频为关键字并以单词为values,这样就能遍历统一词频的所以单词并以字符串的形式拼接起来,但是跟最后的要求还差一点就是因为时间的关系我没有实现一个比较函数的类并设置所以最后的排序是默认的从小到大,而不是从大到小)下面截图如下:修改过的代码如下:importjava.io.IOException;importjava.util.StringTokenizer;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.conf.*;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.Mapper;importorg.apache.hadoop.mapreduce.Reducer;..整理范本整理范本.整理范本importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.input.TextInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importorg.apache.hadoop.mapreduce.lib.output.TextOutputFormat;publicclassWordCount{ publicstaticclassMapextendsMapper<LongWritable,Text,Text,IntWritable>{ privatefinalstaticIntWritableone=newIntWritable(1); privateTextword=newText(); publicvoidmap(LongWritablekey,Textvalue,Contextcontext) throwsIOException,InterruptedException{ Stringline=value.toString(); StringTokenizertokenizer=newStringTokenizer(line); while(tokenizer.hasMoreTokens()){ word.set(tokenizer.nextToken()); context.write(word,one); } } } publicstaticclassReduceextendsReducer<Text,IntWritable,Text,IntWritable>{ publicvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext) throwsIOException,InterruptedException{ intsum=0; for(IntWritableval:values){ sum+=val.get(); } context.write(key,newIntWritable(sum)); } } publicstaticclasssortMapextendsMapper<LongWritable,Text,Text,Text>{ privateTextwordcount=newText(); privateTextword=newText(); publicvoidmap(LongWritablekey,Textvalue,Contextcontext) throwsIOException,InterruptedException{ Stringline=value.toString(); StringTokenizertokenizer=newStringTokenizer(line); while(tokenizer.hasMoreTokens()){ word.set(tokenizer.nextToken()); wordcount.set(tokenizer.nextToken());..整理范本整理范本.整理范本 context.write(wordcount,word); } } } publicstaticclasssortReduceextendsReducer<Text,Text,Text,Text>{ publicvoidreduce(Textkey,Iterable<Text>values,Contextcontext) throwsIOException,InterruptedException{ Stringwordline=""; for(Textval:values){ wordline+=val+","; } context.write(key,newText(wordline)); } } publicstaticvoidmain(String[]args)throwsException{ Configurationconf=newConfiguration(); Jobjob=newJob(conf,"wordcount"); job.setJarByClass(WordCount.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setMapperClass(Map.class); job.setReducerClass(Reduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath(job,newPath(args[0])); FileOutputFormat.setOutputPath(job,newPath(args[1])); job.waitForCompletion(true); JobsortJob=newJob(conf,"sortword"); sortJob.setJarByClass(WordCount.class); sortJob.setOutputKeyClass(Text.class); sortJob.setOutputValueClass(Text.class); ..整理范本整理范本.整理范本 sortJob.setMapperClass(sortMap.class); sortJob.setReducerClass(sortReduce.class); sortJob.setInputFormatClass(TextInputFormat.class); sortJob.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath(sortJob,newPath(args[1]+"/part-r-00000")); FileOutputFormat.setOutputPath(sortJob,newPath(args[1]+"/result")); sortJob.waitForCompletion(true); }}四、实验遇到的问题及其解决方法iSCSItarget实验比较简单,所遇到的问题不多,主要是当时对于vim的操作上有一些不熟练所以耽误了一些时间;其次就是刚开始时NAT而不是桥接模式致使client连接不上我的机器浪费了一些时间,总体来说实验比较简单;此次实验中的问题主要集中在Hadoop/MapReduce这个实验上,程序的编写上不是特别困难,参照着网上的讲解和HadoopAPI可以自己摸索个大概并修改老师给的程序;主要是在配置ssh无密码连接以及之后的Hadoop服务启动及重启之后再次开启服务上出现了一些问题,下面挑选列举如下:在分布模式下试图无密码登录node2的时候失败,之后按照网上教程尝试尝试用ssh中的scp命令传输文件失败;解决方法:出现问题的主要原因是因为当时对scp命令以及相关的参数不太了解,所以当时着急解决问题所以利用的是“土方法”——U盘拷贝至slaves机并覆盖原有文件。之后实验完成之后又尝试了用scp在两台机器上拷贝过文件并成功。首次无密码ssh连接成功,并在网页里显示正常(有活节点),但是在使用Eclipse3.7和Hadoop-plugin.020.203尝试登录DFS分布式文件系统时显示无法连接;解决方法:经查此为版本问题,可能是由于Eclipse的版本太新而Hadoop版本没跟上所致;最后使用网上有人运行成功的eclipse3.3和Hadoop-0.20.2可以运行成功,正确添加node1节点;头一天登录成功,第二天尝试再此登录的时候虽然显示各节点服务启动正常,但是在Eclipse中显示无法进入DFS文件系统,查看logs中的Namenode记录发现报错“couldonlybereplicatedto0nodes,insteadof1”;解决办法:经尝试此为节点启动顺序的问题,分别按顺序在node1和node2上开启namenode(node1)、datanode(node2)、jobtracker(node1)、tasktracker(node2),注意我在此处只能分别开启,如果使用start-all.sh全部自动开启的话..整理范本整理范本.整理范本就会出现上述问题中的启动所有节点正常但是无活节点可用的情况。有时stop-all.sh之后再此format之后再次启动会发现Namenode(或Datanode)无法启动成功;解决办法:此种错误出现的原因有:(1)查看logs发现报错为“XXdoesnotexist”,说明我们在配置core-site.xml等文件中设置的文件夹路径不对或文件夹不存在;(2)logs文件中提示“NameNodeisnotformatted”,即Namenode节点未成功格式化;(3)“Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop/name/current目录下的VERSION文件,上面记录了版本信息)”,因为重启节点后数据更新导致了Namenode和Datanode版本不一致;针对以上三种情况的解决方案为:(1)根据logs报错信息重新mkdir;(2)重新hadoopnamenode–format;(3)如上所述此为上一次的文件未清理导致文件不匹配的出现的错误导致节点服务关闭,这时我们要分别删除配置文件中设置的hadoop.tmp.dir、.dir、dfs.data.dir的文件夹下的目录清空并再此format即可;当然这不是最好的办法因为这样做会让上次上传的文件删除消失;更好的解决办法还在尝试;五、实验结论 总体来说这次实验其实还是比较有趣的,有别于以前大多数时候做的纯编程,这次实验主要是实践环境上的配置,使用的技术也比较新;当然做的过程中比较苦恼,因为

温馨提示

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

评论

0/150

提交评论