MapReduce 的原理、流程【重要】

简介: MapReduce 的原理、流程【重要】

MapReduce 分为两个阶段,Map 阶段和 Reduce 阶段:

MapTask 工作机制:

首先是 Map 阶段,Map 有五个阶段:Read 阶段、Map 阶段、Collect 阶段、溢写阶段、Merge 阶段

(1)Read 阶段:默认用 TextInputFormat 进行读取数据,用 RecordReader 中的 reader()方法进行读取,以(K,V)的形式传入 Mapper 中。

(2)Map 阶段:map 阶段就是用户在 map 方法中自定义业务代码,来实现需要的业务,用 context.write () 写(K,V)数据。

(3)Collect 阶段:map 写出的数据进入环形缓冲区,环形缓冲区一半存元数据,一半存数据,默认为 100M,当数据写入环形缓冲区 80% 的时候,开始反向写,在环形缓冲区的数据会进行分区和排序(环形缓冲区的数据是存放在内存的)。

(4)溢写阶段:当环形缓冲区的数据达到 80% 的时候或将数据全部读完之后,会将分区且区内有序的数据溢写到磁盘中。

(5)Merge 阶段:溢写到磁盘的数据会进行归并排序,将数据排序好。

 

ReduceTask 工作机制:

然后到 Reduce 阶段,Reduce 阶段有三个阶段:Copy 阶段、Sort 阶段、Reduce 阶段

  1. Copy 阶段:ReduceTask 从 MapTask 上拉取(拷贝)数据,并对数据大小进行判断,如果超过一定阈值,则写到磁盘上,否则直接写到内存上。
  2. Sort 阶段:拿到数据之后,ReduceTask 会启动两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。由于各个 MapTask 已经对数据进行了局部的排序,所以 ReduceTask 只需要对所有数据进行一次归并排序即可。
  3. Reduce 阶段:根据业务自定义 reduce()函数,将计算的结果写到 HDFS 上。

 

相关问题:

1.MR 分为哪几个阶段,每个阶段的主要任务是什么?

MR 分为 Map、shuffle 和 Reduce 三个阶段:

Map 阶段负责数据的过滤分发,将原始数据转化为键值对;Reduce 阶段是对数据进行合并,将具有相同的 key 值的 value 进行处理后再输出新的键值对作为最终结果。

为了让 Reduce 可以并行处理 Map 的结果,必须对 Map 的输出进行一定的分区排序,然后再交给对应的 Reduce,即 Map 方法之后 Reduce 方法之前的这段数据混洗的过程叫做 Shuffle 机制。

相关文章
|
30天前
|
存储 分布式计算 关系型数据库
bigdata-08-MapReduce原理到实战
bigdata-08-MapReduce原理到实战
21 0
|
3月前
|
机器学习/深度学习 分布式计算 Hadoop
通过比喻理解-MapReduce的数据处理流程
通过比喻理解-MapReduce的数据处理流程
29 0
|
5月前
|
机器学习/深度学习 分布式计算 大数据
大数据 - MapReduce:从原理到实战的全面指南
大数据 - MapReduce:从原理到实战的全面指南
357 0
|
8月前
|
分布式计算 Hadoop 数据处理
Hadoop基础学习---6、MapReduce框架原理(二)
Hadoop基础学习---6、MapReduce框架原理(二)
|
8月前
|
存储 分布式计算 Hadoop
Hadoop基础学习---6、MapReduce框架原理(一)
Hadoop基础学习---6、MapReduce框架原理(一)
|
9月前
|
机器学习/深度学习 分布式计算 监控
Hadoop生态系统中的数据处理技术:MapReduce的原理与应用
Hadoop生态系统中的数据处理技术:MapReduce的原理与应用
|
分布式计算 Java
Mapreduce执行机制之提交任务和切片原理
Mapreduce执行机制之提交任务和切片原理
uiu
|
存储 分布式计算 资源调度
MapReduce 原理与实践
MapReduce 原理与实践
uiu
238 0
MapReduce 原理与实践
|
存储 分布式计算 关系型数据库
大数据基础-MapReduce原理及核心编程思想
MapReduce原理及核心编程思想
162 0
|
存储 分布式计算 Java
Mapreduce概念及流程介绍
Mapreduce概念及流程介绍
219 0
Mapreduce概念及流程介绍