Java中的mapreduce没了_MapReduce的过程总结
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的过程总结相关推荐
- 涨姿势,Java中New一个对象是个怎么样的过程?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:勿念先生 blog.csdn.net/mohedong/ar ...
- Java中New一个对象是个怎么样的过程?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 勿念先生 来源 | blog.csdn.net ...
- java中的slave_java – Jenkins slave在构建过程中脱机
jenkins奴隶在建设期间离线.我如何解决这个问题,我在SO和Jenkins问题上看到很多相关问题,但没有人解决. 我的配置: jenkins版1.651.1, Zuul版本2.1.1.dev393 ...
- java中 byte 取值范围_【二进制基础-java中byte的取值范围-推导过程】
java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为"1"表示负数. 正数补码为其本身: 负数补码为其绝对值各位取反加1: 例如 ...
- 用Java编写Hadoop MapReduce任务
尽管Hadoop框架本身是使用Java创建的,但MapReduce作业可以用许多不同的语言编写. 在本文中,我将展示如何像其他Java项目一样,基于Maven项目在Java中创建MapReduce作业 ...
- Java中抽象类的概述及其详解(什么是抽象类?为什么要使用抽象类?抽象类的特点?)
回想前面我们的猫狗案例,提取出一个动物类,并且我们在前面也创建了动物对象,其实这是不对的!为什么呢? 因为我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物.所以说,动物 ...
- Java中的抽象方法是什么,怎么用?
抽象方法- 听着就很抽象的样子 脑中不禁浮现出了各种抽象画的图像 缩在被窝里打起了退堂鼓 但是! Java中的抽象没那么难 抽象方法是个啥? 通俗来说 就是不知道该咋做的方法 先别晕 我给你举个小栗子 ...
- Java中的反射和枚举
假设现在上面的数据是以二次探测的方式来进行存放的,现在让你求: 现在找1:直接就能找到----->次数是1 现在找4:直接就可以找到---->次数是1 现在找14:先得到4的下标,发现不是 ...
- Java中浅拷贝与深拷贝之间的区别
在深入探讨Java中浅表副本与深表副本之间的差异之前,让我们看看首先进行克隆的是什么. 什么是克隆? 克隆是在内存中创建现有对象的精确副本的过程.在Java中,java.lang.Object类的cl ...
最新文章
- 智源沙龙 | 人工智能“3个30年”之后,下个30年将走向何方?
- 企业融入租时代 谋求轻资产化高效运营
- DBA(七):PXC、MySQL存储引擎
- 在linux查看内存的大小
- 嵌入式Linux基础学习笔记-文件IO编程-文件锁(2)
- 使用 unsafe_使用Unsafe真的是关于速度或功能吗?
- bootstrapTable 取消 “正在加载中...”
- TIOBE 6 月编程语言排行榜:Java 放缓,C 复兴了!
- java中json转map
- Pytest报告添加描述时报错:AttributeError: ‘TestReport‘ object has no attribute ‘description‘
- 各级政府发布的BIM标准指南37套免费下载
- zynq 的时钟频率
- MM物料账在制品承担差异功能及配置
- Unity 角色朝向目标 / 动态转向动画
- Affinity Designer Beta(mac设计绘图工具)
- 叙事文章的生成(论文翻译)
- “玲珑杯”ACM 热身赛 # 2.5 A-B (数论)
- python图片压缩算法_使用K均值算法进行图片压缩
- 预言机新手 Band Protocol闪亮 登场!
- _stdcall与_cdel
热门文章
- 论文浅尝 | GraphIE:基于图的信息抽取框架
- Docker的基本使用(部署python项目)+两个奇技淫巧,将 Docker 镜像体积减小 99%
- 一步步手动实现热修复(二)-类的加载机制简要介绍
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之环境配置
- Google 与 GitHub 结盟,为保护软件供应链而战!
- 基于时空相关属性模型的公交到站时间预测算法
- k8s 基础概念和术语
- JDBC链接SQLServer2005 Express
- Google Analytics(分析)
- 【剑指offer】面试题18:删除链表的节点(Java)