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文件里面去,最终处理完输出。

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

db2d746d463d93414c324d58f1b26a6b.png

c424619af4e22b4011ad9ed2ea85f783.png

4ced3f076e8e62f7ffe4ac3587345692.png

ca05ed1a9c76b044496ae74e93f717d4.png

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

169d109deb93fbfafb702a52afcea515.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酒桌上的规矩,社会的潜规则

(一)如果自己真不能喝,丫就别开第一口,端着饭碗夹了菜一边吃着去(二)如果确信自己要喝,就别装墨迹,接下来就是规矩了  规矩一:酒桌上虽然“感情深,一口闷;感情浅,舔一舔”但是喝酒…

7个方面读懂6月的5G标准

来源:5G丨公众号作为IMT2020主要的候选技术, 5GNR在3GPP的快马加鞭地统一协调下急速前行,按照计划,今年第一个5G标准会冻结,将为运营商提供一套5G初期部署的可行方案。5GNR 是5G New Radio的简称,是当今通信…

Linux进制查看工具:od、hexdump、xxd

od 命令 :http://man.linuxde.net/od od 命令 od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常使用od命令查看特殊格式的文件内容,或者用于显示或查看文件中不能直接显示在终端的字符。 od命令系…

Spring Data JPA 从入门到精通~@Param用法

默认情况下,参数是通过顺序绑定在查询语句上的,这使得查询方法对参数位置的重构容易出错。为了解决这个问题,可以使用 Param 注解指定方法参数的具体名称,通过绑定的参数名字做查询条件,这样不需要关心参数的顺序&…

园子里关于罗辑树与视觉树的文章

http://www.cnblogs.com/YilingLai/archive/2006/12/22/600279.html转载于:https://www.cnblogs.com/refeiner/archive/2009/04/18/1438950.html

专家谈计算机体系架构研究获“图灵奖”

来源:科学网 作者:王佳雯 韩扬眉近日,有着“计算机界的诺贝尔奖”之称的“图灵奖”揭开面纱。国际计算机协会宣布,美国科学家约翰轩尼诗和大卫帕特森获得2017年度图灵奖,以表彰二人开创了一种系统的、可量化的方法用…

编译和使用APUE的源码

From:http://blog.csdn.net/mitesi/article/details/19015397 APUE说明及源码下载地址 :http://www.apuebook.com/ APUE 电子版 PDF 下载地址:http://download.csdn.net/download/freeking101/10012610 1. 介绍 总结:APUE是一本…

java标签用法详解_介绍一个javaWeb自定义标签的用法详解

这篇文章主要介绍了javaWeb自定义标签用法,结合实例形式分析了javaweb自定义标签的功能、定义方法及执行原理,需要的朋友可以参考下本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中…

Spring Data JPA 从入门到精通~SpEL表达式的支持

在 Spring Data JPA 1.4 以后,支持在 Query 中使用 SpEL 表达式(简介)来接收变量。 SpEL 支持的变量 变量名 使用方式 描述 entityName select x from #{#entityName} x 根据指定的Repository自动插入相关的entityName 有两种方式能被解…

由partition看窗口函数

最近要完成一个项目,有一个查询可难住了笔者,无论是子查询还是分组,都没弄出来,还是基础知识不行啊。不过呢,可以查资料,最后用一个窗口函数解决了问题。由于开始的数据库是Access,后来笔者导成…

AI版「盗梦空间」?谷歌大脑「世界模型」可实现在其梦境中对智能体进行训练

图源:pixabay原文来源:arXiv原文链接:https://arxiv.org/pdf/1803.10122.pdf作者:David Ha、Jurgen Schmidhuber「雷克世界」编译:嗯~是阿童木呀、KABUDA我们探索构建通用强化学习环境中的生成式神经网络模型。我们的世…

Linux文件空洞与稀疏文件

From:http://www.topjishu.com/8277.html From:http://blog.csdn.net/clamercoder/article/details/38361815 Linux_File_Hole_And_Sparse_Files 参考unix环境高级编程第三版 54页和90页!!! ( 文件I/O章节 lseek…

Spring Data JPA 从入门到精通~@Modifying修改查询

学习思路一样,我们先看源码: public interface Modifying { //如果配置了一级缓存,这个时候用clearAutomaticallytrue,就会刷新hibernate的一级缓存了, 不然你在同一接口中,更新一个对象,接着查询这个对象…

java volatile修饰引用_关于volatile修饰引用类型的疑惑

volatile修饰引用类型能否保证可见性似乎一直没有一个定论,有的书中说仅能保证引用本身的可见性,下面用两段代码来验证:流程基本为一个线程死循环读取某个引用类型的某个变量的值,另一个线程修改这个值,观察线程是否结…

gridview 简单的分页

allowpaging 设为 true 然后 后台代码为: protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex e.NewPageIndex; Get_Gridview(); } Get_Gridview();是绑定gridview 的方法 转载于:https…

西人马聂泳忠:打造机器神经系统,成为中国的特斯拉

作者:于绍洋 来源:投资家网经常穿梭于几个城市,一手拉着行李箱,一手忙于回复工作上的事务,这可能已经成为西人马FATRI(下称,西人马)创始人聂泳忠博士的日常状态。他给人的第一印象…

Linux dd 命令

From:http://www.cnblogs.com/jikexianfeng/p/6103500.html Linux/UNIX: 使用 dd 命令创建 1GB 大小的二进制:http://www.linuxidc.com/Linux/2014-12/110147.htm 菜鸟教程 Linux dd命令:http://www.runoob.com/linux/linux-comm-dd.html …

Ubuntu 20.04 (Focal Fossa) 上安装RabbitMQ和Erlang,并配置管理员,并且修改数据目录

本脚本适用于在Ubuntu 20.04 (Focal Fossa) 上在线快速安装RabbitMQ和Erlang。 快速安装脚本: #!/bin/shsudo apt-get install curl gnupg apt-transport-https -y## Team RabbitMQs main signing key curl -1sLf "https://keys.openpgp.org/vks/v1/by-finge…

javascript indexOf函数

使用方法:strObj.indexOf(str,startIndex[可选]) 程序代码 其中strObj是必选项。String 对象或文字。 str是必选项。要在 String 对象中查找的子字符串。 startIndex是可选项。该整数值指出在 String 对象内开始查找的位置,从0开始。如果省略&#xff0c…

Spring Data JPA 从入门到精通~@Procedure 储存过程的查询方法

我们通过 Procedure 来介绍一下,JPA 对储存过程的支持。 (1)Procedure 源码如下: public interface Procedure {// 数据库里面储存过程的名称String value() default "";// 数据库里面储存过程的名称String procedure…