MapReduce架构与执行流程
一、MapReduce是用于解决什么问题的?
每一种技术的出现都是用来解决实际问题的,否则必将是昙花一现,那么MapReduce是用来解决什么实际的业务呢?
首先来看一下MapReduce官方定义:
总结一句话:MapReduce就是批量处理海量数据的分布式计算框架。
在数据规模比较小时,如果要批量处理一些数据,通常都是在凌晨跑一个或者多个定时任务,定时任务直接连接业务库,从业务库中读取然后批量处理,但是当业务规模逐渐大了之后,像凌晨跑定时任务的方式已不足以支撑业务开展,这时分布式计算诞生了,分布式计算将一个很大的任务切分成很小的子任务,然后将子任务分发到集群上的节点上去执行,执行完之后在合并结果并对外提供服务,MapReduce就是用来解决这种业务场景的。
二、MapReduce架构
< 未完>
三、MapReduce执行流程
执行流程说明:
1. 如果在HDFS上存在一份数据,这份数据被分成4个Block存储(这里假设一个Block就是一个Record), 当MapReduce处理这份数据时,会启动4个Map Task去批量处理,输出的结果是键值对形式
2. Map Task将输出结果写入内存缓冲区(memory buffer),并根据设定Reduce个数据对内存缓冲区里的数据做partition,这时候内存缓冲区的数据有键值对形式变成三元组的形式,如上图(Partition结果),三元组第一个元素为分区号,表示该行数据会分到哪个区。
3. 做完partition之后接着就是sort, 这里排序有2次
3.1 第一次排序:对分区号做排序
3.2 第二次排序:对每个分区里的数据做排序
2次排序之后得到的结果如上图中红框所示
4. 如果Map Task输出的数据量很大,超过100M。当达到80M时spill线程会将结果溢写到磁盘,在磁盘上可能会产生很多个spill文件,
5. 当所有的Map Task执行完之后,MapReduce框架将多个spill文件merge成一个大的文件,这个大文件也是分区好了的
6. 这时TaskTracker通过心跳上报JobTracker, 告诉JobTracker Map Task任务已经跑完了,JobTracker将分配Reduce资源,然后TaskTracker将第5步骤里的大文件按分区号远程拷贝到Reduce机器上
7. Reduce Task对Map Task输出的结果处理,然后生成处理结果写入到HDFS上。注意:一个Reduce Task产生一个文件。
MapReduce架构与执行流程的更多相关文章
- 步步深入MySQL:架构->查询执行流程->SQL解析顺序!
一.前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序 ...
- MapReduce作业的执行流程
MapReduce任务执行总流程 一个MapReduce作业的执行流程是:代码编写 -> 作业配置 -> 作业提交 -> Map任务的分配和执行 -> 处理中间结果 -> ...
- springMVC的架构与执行流程
SpringMVC术语 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU. 处理器映射器(HandlerMapping):根据URL去查找处理器 处理器(Han ...
- [Hadoop]浅谈MapReduce原理及执行流程
MapReduce MapReduce原理非常重要,hive与spark都是基于MR原理 MapReduce采用多进程,方便对每个任务资源控制和调配,但是进程消耗更多的启动时间,因此MR时效性不高.适 ...
- Mybatis功能架构及执行流程
原文地址:http://blog.51cto.com/12222886/2052647 一.功能架构设计 功能架构讲解: 我们把Mybatis的功能架构分为三层: (1) API接口层:提供给外部使用 ...
- SpringMVC架构&组件&执行流程
SpringMVC架构: 组件: DIspatcherServlet:前端控制器.相当于mvc模式的c,是整个流程控制的中心,负责调用其他组件处理用户的请求,降低了组件之间的耦合性. HandlerM ...
- mysql(一)--mysql架构和执行流程
1. 一条查询 SQL 语句是如何执行的? 我们的程序或者工具要操作数据库,第一步要做什么事情? 跟数据库建立连接. 1.1. 通信协议 首先,MySQL 必须要运行一个服务,监听默认的 3306 ...
- map-reduce任务的执行流程
(1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...) (2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HD ...
- 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序
前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...
随机推荐
- [Usaco2003 Open]Lost Cows
Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...
- [ZPG TEST 114] 阿狸的英文名【水题】
1. 阿狸的英文名 阿狸最近想起一个英文名,于是他在网上查了很多个名字.他发现一些名字可以由两个不同的名字各取一部分得来,例如John(约翰)的前缀 “John”和Robinson(鲁滨逊) ...
- Android偏好设置(6)应用和监听各偏好参数
Reading Preferences By default, all your app's preferences are saved to a file that's accessible fro ...
- js学习笔记-事件委托
通过事件委托,你可以把事件处理器绑定到父元素上,避免了把事件处理器添加到多个子级元素上.从而优化性能. 事件代理用到了事件冒泡和目标元素.而任何一个元素的目标元素都是一开始的那个元素. 这里首先要注意 ...
- Asp.Net识别手机访问
在VS创建WEB应用程序时会有一个微软开发的典型web应用程序 在根目录有个用户控件用来实现切换手机和电脑 其中有个微软开发的类和方法用来专门判断移动设备和桌面设备 在Microsoft.AspNet ...
- 2017-11-29 HTML5样式、链接和表格
HTML5样式.链接和表格HTML5列表<ol> 有序列表<ul> 无序列表<li> 列表项 <dl> 列表<dt> 列表项<dd&g ...
- java.lang.String 字符串操作
1.获取文件名 //获取文件名,即就是去掉文件的后缀 /** * mypic.jpg * 获取文件名 * 1. 先找到"."的位置 * 2. 从第一个字符开始截取到".& ...
- yii项目开发配置
Clone项目 git clone https://gitee.com/s***/dianshang.git 安装yii php ini 选择 [0] Development 安装扩展 copy co ...
- Activiti数据库表结构(表详细版)
http://blog.csdn.net/hj7jay/article/details/51302829 1 Activiti数据库表结构 1.1 数据库表名说明 Activiti工作流总 ...
- Linux——网络编程线程池机制
#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <assert.h> ...