MapReduce源码分析完整版

MapReduce源码分析完整版

ID:40277792

大小:742.50 KB

页数:18页

时间:2019-07-30

MapReduce源码分析完整版_第1页
MapReduce源码分析完整版_第2页
MapReduce源码分析完整版_第3页
MapReduce源码分析完整版_第4页
MapReduce源码分析完整版_第5页
资源描述:

《MapReduce源码分析完整版》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一MapReduce概述Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programmingmodel),是一个用于处理和生成大规模数据集(processingandgeneratinglargedatasets)的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函数将所有这些中间的有着相同

2、key的values合并起来。很多现实世界中的任务都可用这个模型来表达。二MapReduce工作原理1Map-ReduceMap-Reduce框架的运作完全基于对,即数据的输入是一批对,生成的结果也是一批对,只是有时候它们的类型不一样而已。Key和value的类由于需要支持被序列化(serialize)操作,所以它们必须要实现Writable接口,而且key的类还必须实现WritableComparable接口,使得可以让框架对数据集的执行排序操作。一个Map-Redu

3、ce任务的执行过程以及数据输入输出的类型如下所示:Map:——>listReduce:>——>2例子下面通过一个的例子来详细说明这个过程。WordCount是Hadoop自带的一个例子,目标是统计文本文件中单词的个数。假设有如下的两个文本文件来运行WorkCount程序:HelloWorldByeWorldHelloHadoopGoodByeHadoop2.1map数据输入Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/va

4、lue对,key取偏移量,value为行内容。如下是map1的输入数据:Key1Value10HelloWorldByeWorld如下是map2的输入数据:Key1Value10HelloHadoopGoodByeHadoop2.2map输出/combine输入如下是map1的输出结果Key2Value2Hello1World1Bye1World1如下是map2的输出结果Key2Value2Hello1Hadoop1GoodBye1Hadoop12.3combine输出Combiner类实现将相同key的值合并起来,它也是一个Redu

5、cer的实现。如下是combine1的输出Key2Value2Hello1World2Bye1  如下是combine2的输出Key2Value2Hello1Hadoop2GoodBye12.4reduce输出Reducer类实现将相同key的值合并起来。如下是reduce的输出Key2Value2Hello2World2Bye1Hadoop2GoodBye1三MapReduce框架结构1角色1.1JobClient每一个job都会在用户端通过JobClient类将应用程序以及配置参数打包成jar文件存储在HDFS,并把路径提交到Jo

6、bTracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。1.2JobTrackerJobTracker是一个master服务,JobTracker负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。1.3TaskTrackerTaskTracker是运行于多个节点上的slaver服务。TaskTracker则负责直接

7、执行每一个task。TaskTracker都需要运行在HDFS的DataNode上,2数据结构2.1Mapper和Reducer运行于Hadoop的MapReduce应用程序最基本的组成部分包括一个Mapper和一个Reducer类,以及一个创建JobConf的执行程序,在一些应用中还可以包括一个Combiner类,它实际也是Reducer的实现。2.2JobInProgressJobClient提交job后,JobTracker会创建一个JobInProgress来跟踪和调度这个job,并把它添加到job队列里。JobInProgr

8、ess会根据提交的jobjar中定义的输入数据集(已分解成FileSplit)创建对应的一批TaskInProgress用于监控和调度MapTask,同时在创建指定数目的TaskInProgress用于监控和调度Redu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。