云计算实验报告3_第1页
云计算实验报告3_第2页
云计算实验报告3_第3页
云计算实验报告3_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、云计算实验报告3 实验 报告 课程 : _ _ _ 云计算 _ 实验 题目 : _ s hdfs 下的 的 e mapreduce 编程应用 _ _ 专业: _ 软件工程 _ 姓名: _ 王磊 _ 学 号 : _ b1040914 _ (1) 书写 e mapreduce 的原理以及执行过程 1.mapreduce 库先把 user program 的输入文件划分为 m 份(m 为用户定义),每一份通常有 16mb 到 64mb,如图左方所示分成了 split04;然后使用 fork 将用户进程拷贝到集群内其它机器上。 2.user program 的副本中有一个称为 master,其余称为w

2、orker,master 是负责调度的,为空闲 worker 分配作业(map作业或者 reduce 作业),worker 的数量也是可以由用户指定的。 3.被分配了 map 作业的 worker,开始读取对应分片的输入数据,map 作业数量是由 m 决定的,和 split 一一对应;map作业从输入数据中抽取出键值对,每一个键值对都作为参数传递给 map 函数,map 函数产生的中间键值对被缓存在内存中。 4.缓存的中间键值对会被定期写入本地磁盘,而且被分为r 个区,r 的大小是由用户定义的,将来每个区会对应一个 reduce作业;这些中间键值对的位置会被通报给 master,master

3、负责将信息转发给 reduce worker。 5.master 通知分配了 reduce 作业的 worker 它负责的分区在什么位置(肯定不止一个地方,每个 map 作业产生的中间键值对都可能映射到所有 r 个不同分区),当 reduce worker 把所有它负责的中间键值对都读过来后,先对它们进行排序,使得相同键的键值对聚集在一起。因为不同的键可能会映射到同一个分区也就是同一个 reduce 作业(谁让分区少呢),所以排序是必须的。 6.reduce worker 遍历排序后的中间键值对,对于每个唯一的键,都将键与关联的值传递给 reduce 函数,reduce 函数产生的输出会添加到

4、这个分区的输出文件中。 6.当所有的 map 和 reduce 作业都完成了,master 唤醒正版的 user program,mapreduce 函数调用返回 user program 的代码。 (2)e mapreduce 程序不同的提交方式 ; 1、用命令行方式提交 2、在 eclipse 中提交作业 3、采用 eclipse 的插件实现项目的提交 这三种方式中在 eclipse 中提交的过程: 前提是:1、在你的电脑上安装好 eclipse,可以在 linux 下,也可 以在 windows 环境下哦,这里需要指出的是:提交作业的机器只要有 hadoop 的 api 就可以了,和提交

5、作业的机器所处的环境无关。 2、成功搭建一个 hadoop 集群,或成功部署一个伪分布式,并启动 hadoop。 代码段截图如下: 这时候程序只会在 eclipse 中虚拟的一个云环境中运行,而不会跑上云端去运行.需要在 main 方法中添加几行代码,代码附录如下: 方案三:采用 eclipse 的插件实现项目的提交 前提:在 eclipse 中成功地安装 mapreduce 插件。 不过需要提醒各位的是:hadoop- 版本自带的插件不够完整,需要作出如下修改: 1、将 hadoop_home/lib 目录下的 commons-configuration-1.6.jar

6、, 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) 基于 e mapreduce 编程模型实现的对文件数据排序 import org.apache.hadoop.conf.configur

7、ation; 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.; import org.apache.hadoop.mapreduce.lib.input.keyvaluetextinputformat; import org.apache.hadoop.ma

8、preduce.lib.output.; import org.apache.hadoop.util.genericoptionsparser; public class sortmain public static void main(string args) throws exception configuration conf = new configuration(); string otherargs = new genericoptionsparser(conf, args).getremainingargs(); if (otherargs.length != 2) system

9、.err.println(usage: wordcount in out); 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.setreducerc

10、lass(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(

温馨提示

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

评论

0/150

提交评论