Hadoop的Shuffle阶段
2024-09-26 21:39:06
原文:
https://www.toutiao.com/i6764683672772674062/
在进入Map之前,首先会将数据从HDFS中读取,进行处理,按照字节偏移量这种之前说的形式处理为K,V对的形式,进入Map阶段。
其中InputFormat可以认为是一种类的继承关系,最终通过调用read方法,生成K,V对,输入到Map中,此时Map接收到的数据就是这个K,V对
然后数据被OutputCollector收集到(OutputCollector负责收集map输出的K,V对)
然后进入一个环形缓存区,默认大小为100M的环形缓冲区,通过mr.sort.mb配置,保存大量的K,V对,可以认为它是个环形链表
然后进入Spill阶段
当内存中的数据量达到一定的阀值的时候,就会将数据写入本地磁盘(溢写到本地),在将数据写入磁盘之前需要对数据进行一次排序的操作,如果配置了combiner,还会将有相同分区号和key的数据进行排序
把所有溢出的临时文件进行一次合并操作,以确保一个MapTask最终只产生一个中间数据文件
然后数据进入Reduce阶段(最终图黄色是Reduce)
最新文章
- Git与Repo入门
- 前端开发框架Bootstrap和KnockoutJS
- ActionBarSherlock
- ZOJ 1013 Great Equipment(DP)
- java中连接postgresql基本代码
- smarty 判断变量是否为空
- 浅谈Spring(一)
- Web前端知识体系精简
- python自动化运维三:数据报表定制以及scapy模块介绍
- log4j源码解析
- object类和内部类
- 中文分词实战——基于jieba动态加载字典和调整词频的电子病历分词
- redis 持久化文章分析的很到位
- 开源项目初涉(C++自我学习开始)
- vue 全局组件【原】
- nexus的安装和简介(2)
- postgresql逻辑结构--视图(五)
- HI~
- 阅读 CloudDPI:Cloud+DPI+Reversible Sketch
- 初识JMM
热门文章
- [BUUCTF]PWN——bjdctf_2020_babyrop2
- Java实现HttpGet和HttpPost请求
- 静态日志框架Extensioner.Logging
- Golang爬虫+正则表达式
- C++ 智能指针(shared_ptr/weak_ptr)原理分析
- IM服务器:编写一个健壮的服务器程序需要考虑哪些问题
- 【LeetCode】170. Two Sum III - Data structure design 解题报告(C++)
- 【九度OJ】题目1080:进制转换 解题报告
- 快速恢复update了的orcale数据表
- Propensity Scores