MapReduce 分为:

1) MapTask :

1.Read阶段:逻辑切片 128M / Maptask 读数据解析出一个个key/value。

2.Map阶段: 把key/value 写入到map中去(处理业务逻辑)

3.Collect阶段:将生成的key/value分区(调用Partitioner)排序,并写入一个环形内存缓冲区中。

4.溢写阶段:分区写入到文件且有序。

5.Combine阶段:归并排序,把众多小文件合并成大文件。

一个大文件逻辑切分成好多片(128mb一片),一片启动一个map, 多个map之间处理的数据有相同的分区但是处理的不同。有可能第二片里面也有分区1的数据。第一片里也有。

2)Shuffer:Map方法之后,Reduce方法之前的数据处理过程称之为Shuffle。(和两个有重合部分)

1.Map的shuffer过程:就是从Map里面写入到环形缓冲区中要先进行分区然后排序再百分之80的时候溢写到磁盘中,接着把map之间分区数据归并排序 (多个有序的小文件形成一个大的有序的文件)然后可压缩后 再溢写到磁盘对应的分区上。

2.Reduce的shuffer过程: 把分区数据拷贝到内存缓冲区中(如果不够就溢写到磁盘中 )然后进行归并排序,生成一个大的有序的文件。按照相同key分成一组!之后放到reduce里面去。   (进入到reduce里面的数据,key必须相同)

3)ReduceTask

1.Copy阶段:将对应分区下的数据拷贝到reduce,没有达到内存上限就存到内存当中,如果超过了就存到磁盘中。

2.Merge阶段:  多个文件合并成一个大的文件。

3.Sort阶段:然后将大文件排序。

4.Reduce阶段:将相同key的拷贝到一个reduce文件里面去,最终处理完输出。

数据倾斜:就是其他人忙的要死,他闲的要命。

combiner :在MAPtask的局部汇总操作,父类是Reducer 区别是combiner在map操作  reducer在reduce操作。(不适合求平均值  适合累加汇总操作)。

Java中的mapreduce没了_MapReduce的过程总结相关推荐

  1. 涨姿势,Java中New一个对象是个怎么样的过程?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:勿念先生 blog.csdn.net/mohedong/ar ...

  2. Java中New一个对象是个怎么样的过程?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 勿念先生 来源 | blog.csdn.net ...

  3. java中的slave_java – Jenkins slave在构建过程中脱机

    jenkins奴隶在建设期间离线.我如何解决这个问题,我在SO和Jenkins问题上看到很多相关问题,但没有人解决. 我的配置: jenkins版1.651.1, Zuul版本2.1.1.dev393 ...

  4. java中 byte 取值范围_【二进制基础-java中byte的取值范围-推导过程】

    java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为"1"表示负数. 正数补码为其本身: 负数补码为其绝对值各位取反加1: 例如 ...

  5. 用Java编写Hadoop MapReduce任务

    尽管Hadoop框架本身是使用Java创建的,但MapReduce作业可以用许多不同的语言编写. 在本文中,我将展示如何像其他Java项目一样,基于Maven项目在Java中创建MapReduce作业 ...

  6. Java中抽象类的概述及其详解(什么是抽象类?为什么要使用抽象类?抽象类的特点?)

    回想前面我们的猫狗案例,提取出一个动物类,并且我们在前面也创建了动物对象,其实这是不对的!为什么呢? 因为我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物.所以说,动物 ...

  7. Java中的抽象方法是什么,怎么用?

    抽象方法- 听着就很抽象的样子 脑中不禁浮现出了各种抽象画的图像 缩在被窝里打起了退堂鼓 但是! Java中的抽象没那么难 抽象方法是个啥? 通俗来说 就是不知道该咋做的方法 先别晕 我给你举个小栗子 ...

  8. Java中的反射和枚举

    假设现在上面的数据是以二次探测的方式来进行存放的,现在让你求: 现在找1:直接就能找到----->次数是1 现在找4:直接就可以找到---->次数是1 现在找14:先得到4的下标,发现不是 ...

  9. Java中浅拷贝与深拷贝之间的区别

    在深入探讨Java中浅表副本与深表副本之间的差异之前,让我们看看首先进行克隆的是什么. 什么是克隆? 克隆是在内存中创建现有对象的精确副本的过程.在Java中,java.lang.Object类的cl ...

最新文章

  1. 智源沙龙 | 人工智能“3个30年”之后,下个30年将走向何方?
  2. 企业融入租时代 谋求轻资产化高效运营
  3. DBA(七):PXC、MySQL存储引擎
  4. 在linux查看内存的大小
  5. 嵌入式Linux基础学习笔记-文件IO编程-文件锁(2)
  6. 使用 unsafe_使用Unsafe真的是关于速度或功能吗?
  7. bootstrapTable 取消 “正在加载中...”
  8. TIOBE 6 月编程语言排行榜:Java 放缓,C 复兴了!
  9. java中json转map
  10. Pytest报告添加描述时报错:AttributeError: ‘TestReport‘ object has no attribute ‘description‘
  11. 各级政府发布的BIM标准指南37套免费下载
  12. zynq 的时钟频率
  13. MM物料账在制品承担差异功能及配置
  14. Unity 角色朝向目标 / 动态转向动画
  15. Affinity Designer Beta(mac设计绘图工具)
  16. 叙事文章的生成(论文翻译)
  17. “玲珑杯”ACM 热身赛 # 2.5 A-B (数论)
  18. python图片压缩算法_使用K均值算法进行图片压缩
  19. 预言机新手 Band Protocol闪亮 登场!
  20. _stdcall与_cdel

热门文章

  1. 论文浅尝 | GraphIE:基于图的信息抽取框架
  2. Docker的基本使用(部署python项目)+两个奇技淫巧,将 Docker 镜像体积减小 99%
  3. 一步步手动实现热修复(二)-类的加载机制简要介绍
  4. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置
  5. Google 与 GitHub 结盟,为保护软件供应链而战!
  6. 基于时空相关属性模型的公交到站时间预测算法
  7. k8s 基础概念和术语
  8. JDBC链接SQLServer2005 Express
  9. Google Analytics(分析)
  10. 【剑指offer】面试题18:删除链表的节点(Java)