博客
关于我
【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/

你可能感兴趣的文章
NUC1077 Humble Numbers【数学计算+打表】
查看>>
NuGet Gallery 开源项目快速入门指南
查看>>
NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
查看>>
nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
查看>>
Nuget~管理自己的包包
查看>>
NuGet学习笔记001---了解使用NuGet给net快速获取引用
查看>>
nullnullHuge Pages
查看>>
NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
查看>>
null可以转换成任意非基本类型(int/short/long/float/boolean/byte/double/char以外)
查看>>
Numix Core 开源项目教程
查看>>
numpy
查看>>
NumPy 或 Pandas:将数组类型保持为整数,同时具有 NaN 值
查看>>
numpy 或 scipy 有哪些可能的计算可以返回 NaN?
查看>>
numpy 数组 dtype 在 Windows 10 64 位机器中默认为 int32
查看>>
numpy 数组与矩阵的乘法理解
查看>>
NumPy 数组拼接方法-ChatGPT4o作答
查看>>
numpy 用法
查看>>
Numpy 科学计算库详解
查看>>
Numpy.fft.fft和numpy.fft.fftfreq有什么不同
查看>>
Numpy.ndarray对象不可调用
查看>>