当前位置: 首页 > news >正文

Hadoop3:MapReduce中的Shuffle机制

一、流程图

ShuffleMap方法之后,Reduce方法之前的数据处理过程称。
在这里插入图片描述

二、图解说明

1、数据流向

map方法中context.write(outK, outV);开始,写入环形缓冲区,再进行分区排序,写到磁盘
reduce方法拉取磁盘上的数据,归并成最终的结果文件。
一般,设置几个分区(Partition),则生成几个文件。

2、缓冲区

此处的排序,采用快速排序算法,针对key的索引进行排序,按照字典顺序进行排序。
如果环形缓冲区设置的是100m,那么,实际存储数据的空间只有50m
以此,来计算环形缓冲区的IO输出次数

3、Combiner过程

缓冲区溢出的文件有两类,split.indexsplit.out,每个分区都会生成一组。
此处主要做了两件事,对每次溢出的文件,按分区进行合并,和并算法时的算法是归并算法
归并好之后,分别进行压缩处理,并写入磁盘。
而,该过程是一个优化流程,所以,是可选流程。并不是必须的。

4、Reduce处理流程

设置几个分区,就要对应设置几个reduce对应处理
这里的分组也是非必须
reduce按分区(Partition)主动去读取map的结果文件到内存中,如果内存不够,会溢出到磁盘。
这里主要是进行文件的合并,使用的是归并算法

三、整体说明

例如,有100万数据,我设计用5个mapTask去处理。那么,每个mapTask会处理20万条数据。
分区,设置为2个,那么,reduce个数就是2个。
文件数量的变化,如下图所示。
在这里插入图片描述

http://www.lryc.cn/news/377206.html

相关文章:

  • 从设计到实践:高速公路监控技术架构全剖析
  • Go Context
  • centOS Stream9配置NAT8网络
  • Linux - 进程
  • nginx+tomcat负载均衡、动静分离群集【☆☆☆☆☆】
  • MySQL容器部署步骤
  • 在 Ubuntu 18.04.4 LTS上安装 netmap
  • spark 整合 yarn
  • 蓝桥杯十五届国赛模拟题1答案
  • 分布式之日志系统平台ELK
  • git常见错误
  • 构建稳定高效的消息传递中间件:消息队列系统的设计与实现
  • 支持 MKV、MP4、AVI、MPG 等格式视频转码器
  • yum
  • 【单片机毕业设计选题24016】-基于STM32和阿里云的采空区环境监测系统设计
  • Leetcode3179. K 秒后第 N 个元素的值
  • vue3第二阶段的开发文档
  • 【网络安全学习】漏洞扫描:- 02- nmap漏洞扫描
  • Web开发技能树-HTML-class/id/name/tag
  • 据APO Research(阿谱尔)统计,2023年全球乳酸企业产能约119.3万吨
  • 百度文心智能体平台(想象即现实):轻松上手,开启智能新时代!创建属于自己的智能体应用。
  • Linux中ls -lsa 和ls -lst区别
  • TDengine 签约上海晶澳太阳能,助力储能业务平台搭建
  • 【数据结构】选择题
  • 数据库 |试卷八试卷九试卷十
  • 【华为HCIA数通网络工程师真题-构建互联互通的IP网络】
  • Kafka 负载均衡挑战及解决思路
  • 【Java面试】二十一、JVM篇(中):垃圾回收相关
  • 深入理解预处理
  • DSP28335:定时器