云计算实验报告3

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

云计算实验报告3

实验报告

课程:

_________ _ _____ 云计算 ________________________ 实验题目:

_______ S HDFS 下的的 e MapReduce 编程应用 _ _ 专业:

___________ 软件工程 _________________________ 姓名:

___________ 王磊 _____________________________ 学号:

___________ B1040914 _________________________

(1) 书写 e MapReduce 的原理以及执行过程

1.MapReduce 库先把 user program 的输入文件划分为 M 份(M 为用户定义),每一份通常有 16MB 到 64MB,如图左方所示分成了split0~4;然后使用 fork 将用户进程拷贝到集群内其它机器上。

er 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)e MapReduce 程序不同的提交方式; 1、用命令行方式提交2、在 eclipse 中提交作业 3、采用 eclipse 的插件实现项目的提交这三种方式中在 eclipse 中提交的过程: 前提是:1、在你的电脑上安装好 eclipse,可以在 linux 下,也可

以在 windows 环境下哦~,这里需要指出的是:提交作业的机器只要有 hadoop 的 API 就可以了,和提交作业的机器所处的环境无关。

2、成功搭建一个 hadoop 集群,或成功部署一个伪分布式,并启动hadoop。

代码段截图如下:

这时候程序只会在 eclipse 中虚拟的一个云环境中运行,而不会跑上云端去运行.需要在 main 方法中添加几行代码,代码附录如下: 方案三:采用 eclipse 的插件实现项目的提交

前提:在 eclipse 中成功地安装 mapreduce 插件。

不过需要提醒各位的是:hadoop-0.20.203.0 版本自带的插件不够完整,需要作出如下修改:

1、将 HADOOP_HOME/lib 目录下的 commons-configuration-

1.6.jar , commons-mons-lang-

2.4.jar , jackson-core-asl-

1.0.1.jar 和 jackson-mapper-asl-1.0.1.jar 等 5 个包复制到

hadoop-eclipse-plugin-0.20.203.0.jar 的 lib 目录下。

2、然后,修改该包 META-INF 目录下的 MANIFEST.MF,将classpath 修改为以下内容:

(3) 基于 e 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.; import

org.apache.hadoop.mapreduce.lib.input.KeyValueTextInputFormat ; import org.apache.hadoop.mapreduce.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) {

相关文档
最新文档