016_笼统概述MapReduce执行流程结合wordcount程序
数据传输<key,value>
File--> <key,value> -->map(key,value) --> mapResult<key,value> --> partition<key,value>
--> sort<key> --> combiner<key,value>(可选,本地化规约)
--> combiner<key,value> --> 合并<key,value> --> sort<key> --> reduce<key,value>
--> reduceResult<key,value> --> File
核心:合并和排序
一、map任务处理
1 、读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。
2 、写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
3、 对输出的key、value进行分区。
4 、对不同分区的数据,按照key进行排序、分组。相同key的value放到
一个集合中。
5 、(可选)分组后的数据进行归约。
二、reduce任务处理
1、对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
2、对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
3、把reduce的输出保存到文件中。
三、JobTracker和TaskTracke及相关的任务分工
JobTracker 负责接收用户提交的作业,负责启动、跟踪任务执行。
TaskTracke 负责执行由JobTracker分配的任务,管理各个任务
在每个节点上的执行情况。
Job ,用户的每一个计算请求,称为一个作业。
Task ,每一个作业,都需要拆分开了,交由多个服务器来完成,拆分出来的执行单位,就称为任务。
Task分为MapTask和ReduceTask两种,分别进行Map操作和Reduce操作,依据Job设置的Map类和Reduce类
四、WordCount 处理过程
1、将文件拆分成splits,由于测试用的文件较小,所以每个文件为一个split,并将文件按行分割形成<key,value>对,下图所示。这一步由MapReduce框架自动完成,其中偏移量(即key值)包括了回车和换行所占的字符数2个(Windows/Linux环境不同)。
2、将分割好的<key,value>对交给用户定义的map方法进行处理,生成新的<key,value>对,下图所示。
3、得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key至相同value值累加,得到Mapper的最终输出结果。下图所示:
4、Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的<key,value>对,并作为WordCount的输出结果,下图所示。
五、MR 作业运行流程分析
2、向JobTracker请求一个Job ID;
3、将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的JAR文件、配置文件和客户端计算所得的输入划分信息。这些文件都存放在JobTracker专门为该作业创建的文件夹中。文件夹名为该作业的Job ID。JAR文件默认会有10个副本(mapred.submit.replication属性控制);输入划分信息告诉了JobTracker应该为这个作业启动多少个map任务等信息;
最新文章
- 关于图片的PNG与JPG、JIF格式
- 【leetcode】Excel Sheet Column Title
- 通过JS语句判断WEB网站的访问端是电脑还是手机
- 我的android学习经历23
- ubuntu13.04装配oracle11gR2
- windows下安装swoole。
- ASP.NET中常用重置数据的方法
- 《数据通信与网络》笔记--IPSec
- qt数据库多线程问题的解决(QSqlDatabase只能在创建它的线程中使用)
- mysqladmin在SuSE linux系统中--sleep參数使用不准确问题
- jQuery实现 图片的局部放大效果
- Java 的String类
- #001 Python 00号作业:关于课程
- 如何快速高效简洁的打开软件 干净利索的windows快捷程序启动器
- DNS预解析prefetch
- docker异常问题解决
- 来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor
- Python线程和协程-day10
- .net core2 mvc项目中,加入RazorPages页面
- RIDE指定log和report的输出目录