云计算实验报告3.docx_第1页
云计算实验报告3.docx_第2页
云计算实验报告3.docx_第3页
云计算实验报告3.docx_第4页
云计算实验报告3.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验报告课程:_云计算_实验题目:_HDFS下的MapReduce编程应用_专业:_软件工程_姓名:_王磊_学号:_B1040914_(1)书写MapReduce的原理以及执行过程1.MapReduce库先把user program的输入文件划分为M份(M为用户定义),每一份通常有16MB到64MB,如图左方所示分成了split04;然后使用fork将用户进程拷贝到集群内其它机器上。 2.user program的副本中有一个称为master,其余称为worker,master是负责调度的,为空闲worker分配作业(Map作业或者Reduce作业),worker的数量也是可以由用户指定的。3.被分配了Map作业的worker,开始读取对应分片的输入数据,Map作业数量是由M决定的,和split一一对应;Map作业从输入数据中抽取出键值对,每一个键值对都作为参数传递给map函数,map函数产生的中间键值对被缓存在内存中。4.缓存的中间键值对会被定期写入本地磁盘,而且被分为R个区,R的大小是由用户定义的,将来每个区会对应一个Reduce作业;这些中间键值对的位置会被通报给master,master负责将信息转发给Reduce worker。5.master通知分配了Reduce作业的worker它负责的分区在什么位置(肯定不止一个地方,每个Map作业产生的中间键值对都可能映射到所有R个不同分区),当Reduce worker把所有它负责的中间键值对都读过来后,先对它们进行排序,使得相同键的键值对聚集在一起。因为不同的键可能会映射到同一个分区也就是同一个Reduce作业(谁让分区少呢),所以排序是必须的。6.reduce worker遍历排序后的中间键值对,对于每个唯一的键,都将键与关联的值传递给reduce函数,reduce函数产生的输出会添加到这个分区的输出文件中。6.当所有的Map和Reduce作业都完成了,master唤醒正版的user program,MapReduce函数调用返回user program的代码。(2)MapReduce程序不同的提交方式;1、用命令行方式提交2、在eclipse中提交作业3、采用eclipse的插件实现项目的提交这三种方式中在eclipse中提交的过程:前提是:1、在你的电脑上安装好eclipse,可以在linux下,也可以在windows环境下哦,这里需要指出的是:提交作业的机器只要有hadoop的API就可以了,和提交作业的机器所处的环境无关。2、成功搭建一个hadoop集群,或成功部署一个伪分布式,并启动hadoop。代码段截图如下:这时候程序只会在eclipse中虚拟的一个云环境中运行,而不会跑上云端去运行.需要在main方法中添加几行代码,代码附录如下:方案三:采用eclipse的插件实现项目的提交 前提:在eclipse中成功地安装mapreduce插件。不过需要提醒各位的是:hadoop-版本自带的插件不够完整,需要作出如下修改:1、将HADOOP_HOME/lib目录下的 commons-configuration-1.6.jar , commons-httpclient-3.0.1.jar , commons-lang-2.4.jar , jackson-core-asl-1.0.1.jar 和 jackson-mapper-asl-1.0.1.jar 等5个包复制到hadoop-eclipse-plugin-.jar的lib目录下。2、然后,修改该包META-INF目录下的MANIFEST.MF,将classpath修改为以下内容:(3)基于MapReduce编程模型实现的对文件数据排序import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Job;import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;import org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat;import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import org.apache.hadoop.util.GenericOptionsParser; public class SortMain public static void main(String args) throws ExceptionConfiguration conf = new Configuration(); String otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if (otherArgs.length != 2) System.err.println(Usage: wordcount ); System.exit(2); Job job = new Job(conf, Sort); job.setJarByClass(SortMain.class); job.setInputFormatClass(KeyValueTextInputFormat.class);/设定输入的格式是key(中间t隔开)value job.setMapperClass(SortMapper.class); /job.setCombinerClass(IntSumReducer.class); job.setReducerClass(SortReducer.class); job.setMapOutputKeyClass(IntPair.class); job.setMapOutputValueClass(IntWritable.class); job.setSortComparatorClass(TextIntCompartor.class); job.setGroupingComparatorClass(TextComparator.class);/以key 进行group by job.setPartitionerClass(PartionTest.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); FileInputFormat.addInputPath(job, new Path(otherAr

温馨提示

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

评论

0/150

提交评论