博客
关于我
【MapReduce】---- MR 框架原理 之 Shuffle机制
阅读量:329 次
发布时间:2019-03-04

本文共 765 字,大约阅读时间需要 2 分钟。

Map方法之后Shuffle过程

在Map方法之后,Reduce方法之前的数据处理过程被称为Shuffle。这一过程主要包括以下几个步骤:

1. 分区

在溢写前对环形缓冲区中的数据集进行分区处理。这种分区通常基于键值的分布情况,以确保后续处理的高效性。

2. 排序

在分区完成后,需要对每个分区的数据集进行排序。排序规则与分区方式保持一致,以便于后续的合并和处理。

3. Combiner(可选)

对于需要汇总操作的数据集,在溢写到磁盘之前,可以利用Combiner对各个分区的数据进行合并。这种方式能够显著减少需要写入磁盘的数据量。

4. 分区归并排序

完成分区和排序后,对每个分区的数据集进行归并处理。归并过程中需要对同一分区内的数据进行合并和排序(如果需要的话)。

5. 压缩

在数据处理完成后,对数据进行压缩。压缩后的数据将以更高效的方式写入磁盘,以减少存储空间的占用。

6. 写磁盘

最终,将压缩好的数据按分区的方式写入磁盘。这一步骤通常是Shuffle过程中最耗时的部分之一。

Reduce方法之前Shuffle过程

在Reduce方法之前,Shuffle过程主要负责数据的预处理和排序工作。其主要步骤包括:

1. 拷贝

将Map处理输出的同一分区数据拷贝到内存中。如果内存空间不足,超出部分将溢写到磁盘中。同时,为了保证磁盘写入的高效性,可能会启动一个ReduceTask来处理该分区的数据。

2. 归并排序

将内存和磁盘上的数据集进行归并。每个开启的ReduceTask都会从不同的MapTask拉取相同分区的数据进行合并,并对合并后的总数据集进行排序。

3. 分组

完成归并排序后,对归并好的数据按照相同的键值进行分组。每个分组的数据将等待Reduce()方法的处理,最终会被汇总到同一个ReduceTask中。

转载地址:http://ckeq.baihongyu.com/

你可能感兴趣的文章
Pandas模块,我觉得掌握这些就够用了!
查看>>
Pandas玩转文本处理!
查看>>
pandas的to_sql方法中使用if_exists=‘replace‘
查看>>
pandas读取parquet报错
查看>>
Pandas进阶大神!从0到100你只差这篇文章!
查看>>
spring5-介绍Spring框架
查看>>
Pandas:将一列与数据帧的所有其他列进行比较
查看>>
PandoraFMS 监控软件 SQL注入漏洞复现
查看>>
PandoraFMS 监控软件 任意文件上传漏洞复现
查看>>
Parallel.ForEach使用示例
查看>>
Parallel.ForEach的基础使用
查看>>
parallels desktop for mac安装虚拟机 之parallelsdesktop密钥 以及 parallels desktop安装win10的办公推荐可以提高办公效率...
查看>>
paramiko模块
查看>>
param[:]=param-lr*param.grad/batch_size的理解
查看>>
Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
查看>>
ParseChat应用源码ios版
查看>>
Part 2异常和错误
查看>>
Spring @Async执行异步方法的简单使用
查看>>
PAT (Basic Level) Practise - 写出这个数
查看>>
PAT 1027 Colors in Mars
查看>>