原文:

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)

最新文章

  1. Git与Repo入门
  2. 前端开发框架Bootstrap和KnockoutJS
  3. ActionBarSherlock
  4. ZOJ 1013 Great Equipment(DP)
  5. java中连接postgresql基本代码
  6. smarty 判断变量是否为空
  7. 浅谈Spring(一)
  8. Web前端知识体系精简
  9. python自动化运维三:数据报表定制以及scapy模块介绍
  10. log4j源码解析
  11. object类和内部类
  12. 中文分词实战——基于jieba动态加载字典和调整词频的电子病历分词
  13. redis 持久化文章分析的很到位
  14. 开源项目初涉(C++自我学习开始)
  15. vue 全局组件【原】
  16. nexus的安装和简介(2)
  17. postgresql逻辑结构--视图(五)
  18. HI~
  19. 阅读 CloudDPI:Cloud+DPI+Reversible Sketch
  20. 初识JMM

热门文章

  1. [BUUCTF]PWN——bjdctf_2020_babyrop2
  2. Java实现HttpGet和HttpPost请求
  3. 静态日志框架Extensioner.Logging
  4. Golang爬虫+正则表达式
  5. C++ 智能指针(shared_ptr/weak_ptr)原理分析
  6. IM服务器:编写一个健壮的服务器程序需要考虑哪些问题
  7. 【LeetCode】170. Two Sum III - Data structure design 解题报告(C++)
  8. 【九度OJ】题目1080:进制转换 解题报告
  9. 快速恢复update了的orcale数据表
  10. Propensity Scores