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

你可能感兴趣的文章
Python+Selenium自动化测试项目实战【建议收藏】
查看>>
Python+Selenium自动化测试:Page Object模式
查看>>
python+selenium进行cnblog的自动化登录测试
查看>>
Python函数只返回第一个值而不是数据框
查看>>
Python+SQL实战:京东用户行为数据分析案例解析(上)
查看>>
Python+SQL实战:京东用户行为数据分析案例解析(下)
查看>>
PYTHON+Twisted+sqlanydb=ABORT()
查看>>
Python函数之返回值、作用域和局部变量
查看>>
Python+统计学 | 探索常用的数据分析统计分布
查看>>
python, selenium中用于切换帧的函数
查看>>
python函数
查看>>
python----线程、进程、协程的区别及多线程详解
查看>>
python---5
查看>>
python---使用celery分布式系统异步发送短信(云通讯)来验证登录
查看>>
python--003--百分号字符串拼接、format
查看>>
Python--10、线程
查看>>
Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
查看>>
python--基本代码规范
查看>>
Python--抽象类接口类
查看>>
PYTHON--欧拉习题二
查看>>