- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MapReduce源码分析完整版
一 MapReduce概述
Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programming model),是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务都可用这个模型来表达。
二 MapReduce工作原理
1 Map-Reduce
Map-Reduce框架的运作完全基于key,value对,即数据的输入是一批key,value对,生成的结果也是一批key,value对,只是有时候它们的类型不一样而已。Key和value的类由于需要支持被序列化(serialize)操作,所以它们必须要实现Writable接口,而且key的类还必须实现WritableComparable接口,使得可以让框架对数据集的执行排序操作。
一个Map-Reduce任务的执行过程以及数据输入输出的类型如下所示:
Map: k1,v1 —— listk2,v2
Reduce:k2,listv2 —— k3,v3
2例子
下面通过一个的例子来详细说明这个过程。WordCount是Hadoop自带的一个例子,目标是统计文本文件中单词的个数。假设有如下的两个文本文件来运行WorkCount程序:
Hello World Bye World
Hello Hadoop GoodBye Hadoop
2.1 map数据输入
Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/value对,key取偏移量,value为行内容。
如下是map1的输入数据:
Key1 Value1 0 Hello World Bye World 如下是map2的输入数据:
Key1 Value1 0 Hello Hadoop GoodBye Hadoop
2.2 map输出/combine输入
如下是map1的输出结果
Key2 Value2 Hello 1 World 1 Bye 1 World 1
如下是map2的输出结果
Key2 Value2 Hello 1 Hadoop 1 GoodBye 1 Hadoop 1
2.3 combine输出
Combiner类实现将相同key的值合并起来,它也是一个Reducer的实现。
如下是combine1的输出
Key2 Value2 Hello 1 World 2 Bye 1 ??
如下是combine2的输出
Key2 Value2 Hello 1 Hadoop 2 GoodBye 1 2.4 reduce输出
Reducer类实现将相同key的值合并起来。
如下是reduce的输出
Key2 Value2 Hello 2 World 2 Bye 1 Hadoop 2 GoodBye 1 三MapReduce框架结构
1 角色
1.1 JobClient
每一个job都会在用户端通过JobClient类将应用程序以及配置参数打包成jar文件存储在HDFS,并把路径提交到JobTracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)并将它们分发到各个TaskTracker服务中去执行。
1.2 JobTracker
JobTracker是一个master服务, JobTracker负责调度job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。
1.3 TaskTracker
TaskTracker是运行于多个节点上的slaver服务。TaskTracker则负责直接执行每一个task。TaskTracker都需要运行在HDFS的DataNode上,
2 数据结构
2.1 Mapper和Reducer
运行于Hadoop的MapReduce应用程序最基本的组成部分包括一个Mapper和一个Reducer类,以及一个创建JobConf的执行程序,在一些应用中还可以包括一个Combiner类,它实际也是Reducer的实现。
2.2 JobInProgress
JobClient
您可能关注的文档
最近下载
- 办公楼空调系统的高效维护方案.docx
- 贵州省遵义市红花岗区第十二中学2023-2024学年七年级下学期期中数学试题(原卷版).docx VIP
- 贵州省遵义市红花岗区第十二中学2023-2024学年七年级下学期期中数学试题(解析版).docx VIP
- 《利用本地农村乡土资源助推美术教学的研究》研究报告.doc
- 市委党校物业管理服务总体方案.doc VIP
- 国有企业合规管理办法.pdf VIP
- 2024《盒马鲜生冷供应链物流成本现状、问题及完善对策研究》11000字.docx
- 机器视觉软件:Basler二次开发_(3).Basler相机驱动与SDK安装.docx
- 高中语文(统编版)必修上册+下册单元任务与人文主题 复习梳理.docx
- 2019年重庆市高职分类招生考试(中职类)药剂类真题.pdf VIP
文档评论(0)