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

你可能感兴趣的文章
Prometheus 云原生 - 基于 file_sd、http_sd 实现 Service Discovery
查看>>
Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
查看>>
Prometheus 介绍
查看>>
Prometheus 安全配置详解
查看>>
prometheus 安装node_exporter, node_exporter 安装最新版 普罗米修思安装监控服务器client
查看>>
Prometheus 安装部署实战
查看>>
prometheus 持久化存储方案
查看>>
Prometheus 监控系统企业级实战
查看>>
Prometheus 监控系统简介
查看>>
prometheus监控nginx实战
查看>>
Prometheus监控redis数据库实战
查看>>
Prometheus监控教程:使用Grafana展示主机基本信息
查看>>
Prometheus监控教程:配置介绍
查看>>
Prometheus(2):SpringBoot 2.X集成Prometheus
查看>>
Promise 原理解析与实现(遵循Promise/A+规范)
查看>>
PyTorch:传递 numpy 数组进行权重初始化
查看>>
promise.all是并发执行吗_攻破面试灵魂拷问,解读Java并发编程的艺术,本文带你深入l理解...
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 7 Optimization
查看>>
promise总结
查看>>
Propel项目改为基于TensorFlow.js
查看>>