您好,欢迎访问三七文档
实验报告课程名称:云计算课程实验授课班级:13级物联网工程学号:1362410220姓名:王林浩指导老师:金永霞实验一远程读取HDFS中的一个文件一、实验目的1.熟练运用Eclipse平台进行hadoop编程2.深入理解MapReduce3.熟悉Linux下hadoop命令相关操作二、实验内容及要求编写程序使用URL方式从HDFS中读取一个文件。三、实验步骤1.启动hadoop,向hdfs中上传一个文本文件。2.检查物理机和主机能否ping通。3.编写程序,远程读取文件数据4.调试运行。四、算法思想用url读取hdfs中的数据流。五、实验结果六实验代码packagehdfs;importjava.net.URL;importjava.io.InputStream;importorg.apache.hadoop.fs.FsUrlStreamHandlerFactory;importorg.apache.hadoop.io.IOUtils;publicclassApp1{publicstaticfinalStringHDFS_PATH=hdfs://192.168.80.100:9000/wlh/wlh.txt;publicstaticvoidmain(String[]args)throwsException{URL.setURLStreamHandlerFactory(newFsUrlStreamHandlerFactory());finalURLurl=newURL(HDFS_PATH);finalInputStreamin=url.openStream();IOUtils.copyBytes(in,System.out,1024,true);}}实验二用程序实现HDFS文件相关操作一、实验目的1.熟练运用Eclipse平台进行hadoop编程2.深入理解HDFS系统3.熟悉Linux下HDFS命令相关操作二、实验内容及要求编写程序,要求在HDFS文件系统中建立一个目录test,在test目录先创建文本文件file,并把文件从HDFS下载到本地三、实验步骤1.赋予写权限cd/cd/usr/local/hadoophadoopfs-chmod777/serviceiptablesstop2.在E盘新建文本文档wlh.txt,上传到HDFS,然后从HDFS下载到D盘。四、算法思想HDFS文件的上传与下载。五、实验结果六源代码packagehdfs;importjava.io.FileInputStream;importjava.io.ByteArrayInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.net.URI;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataOutputStream;importorg.apache.hadoop.fs.FSDataInputStream;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IOUtils;importorg.apache.hadoop.fs.FileStatus;publicclassApp2{publicstaticfinalStringHDFS_PATH=hdfs://192.168.80.100:9000;publicstaticfinalStringDIR_PATH=/test;publicstaticfinalStringFILE_PATH=/test/wlh.txt;publicstaticvoidmain(String[]args)throwsException{finalFileSystemfs=FileSystem.get(newURI(HDFS_PATH),newConfiguration());makeDir(fs);/*创建目录*///listDir(fs);/*显示文件列表*/uploadFile(fs);/*上传文件*/downloadFile(fs);/*下载文件*///deleteFile(fs);/*删除文件或目录*///writetoFile(fs);/*写入文件*///readFile(fs);/*读出文件*/}/*创建目录*/privatestaticvoidmakeDir(finalFileSystemfs)throwsIOException{fs.mkdirs(newPath(DIR_PATH));}/*上传文件*/privatestaticvoiduploadFile(finalFileSystemfs)throwsIOException,FileNotFoundException{finalFSDataOutputStreamout=fs.create(newPath(FILE_PATH));finalFileInputStreamin=newFileInputStream(E:/wlh.txt);IOUtils.copyBytes(in,out,1024,true);}/*下载文件*/privatestaticvoiddownloadFile(finalFileSystemfs)throwsIOException{Stringsrc_HDFS_PATH=HDFS_PATH+FILE_PATH;Stringdst=D:/;Pathsrc_Path=newPath(src_HDFS_PATH);Pathdst_Path=newPath(dst);FileSystemfs1=src_Path.getFileSystem(newConfiguration());fs1.copyToLocalFile(false,src_Path,dst_Path);}}实验三手机流量统计一、实验目的1.熟练运用Eclipse平台进行hadoop编程2.深入理解MapReduce3.熟悉Linux下hadoop命令相关操作二、实验内容及要求设通信话单中包含手机号码和每次网络访问的数据流量,编写MapReduce程序计算每个手机号对应的数据流量总和。三、实验步骤1.在虚拟机中编写一定格式的手机号码流量记录文档。2.上传到HDFS中。3.用MapReduce处理数据。4.查看实验结果。四、算法思想Map过程将数据分行,分别获得手机号和流量,将手机号作为Key,将流量作为Value,Reduce过程将每个相同Key的Value值加起来得到统计。五、实验结果六源代码publicclassAverageGrade{//自定义MapperprivatestaticclassAverageGradeMapperextendsMapperLongWritable,Text,Text,IntWritable{@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//获取每行数据的值StringlineValue=value.toString();//将文件分成多行StringTokenizerstringTokenizer=newStringTokenizer(lineValue,\n);while(stringTokenizer.hasMoreElements()){//将一行数据进行分割StringTokenizertokenizer=newStringTokenizer(stringTokenizer.nextToken());//得到学生姓名StringstrName=tokenizer.nextToken();//得到学生成绩StringstrScore=tokenizer.nextToken();//用学生姓名作为keyTextname=newText(strName);//用学生成绩作为valueIntWritablescore=newIntWritable(Integer.valueOf(strScore));//将key、value写回到contextcontext.write(name,score);}};}//自定义ReducerprivatestaticclassAverageGradeReducerextendsReducerText,IntWritable,Text,FloatWritable{@Overrideprotectedvoidreduce(Textkey,IterableIntWritablevalues,Contextcontext)throwsIOException,InterruptedException{floatsum=0;//sum用来存放每个学生的总成绩floatcounter=0;//counter表示课程门数for(IntWritableintWritable:values){sum+=intWritable.get();//counter++;}context.write(key,newFloatWritable(sum));}}//驱动代码privateintrun(String[]args)throwsException{//获取配置信息Configurationconfiguration=newConfiguration();//优化程序String[]otherArgs=newGenericOptionsParser(configuration,args).getRemainingArgs();if(otherArgs.length!=2){System.err.println(Usage:SortDatainout);System.exit(2);}//创建Job,设置配置信息和Job名称Jobjob=newJob(configuration,AverageGrade);job.setJarByClass(AverageGrade.class);//要把程序打成jar包运行,需要这条语句//1.设置输入路径PathinputDir=newPath(args[0]);FileInputFormat.addInputPath(job,inputDir);//2.设置mapper类和map()方法输出的key、value类型job.setMapperClass(AverageGradeMapper.class);job.setMapOutputKeyClass(Text.class);job.setMapOutputValueClass(IntWritable.class);//3.设置Reducer类以及输出的key和value的类型job.setReducerClass(AverageGradeReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(FloatWritable.class);//4.设置输出路径PathOutputDir=newPath(args[1]);FileOutputFormat.setOutputPath(job,OutputDir);//5.提交作业booleanisSuccess=job.waitForCompletion(true);returnisSuccess?0:1;}//Client区域publicstaticvoidmain(String[]args)throwsException{args=newString[]{hdf
本文标题:云计算实验报告
链接地址:https://www.777doc.com/doc-3501247 .html