mapreduce的shuffle机制(来自学习笔记)

3. MAPREDUCE原理篇(2)

3.1 mapreduce的shuffle机制

3.1.1概述:

v  mapreduce中,map阶段处理的数据如何传递给reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle;

v shuffle: 洗牌、发牌——(核心机制:数据分区,排序,缓存)

v 具体来说:就是将maptask输出的处理结果数据,分发给reducetask,并在分发的过程中,对数据按key进行了分区和排序;

 

3.1.2主要流程:

Shuffle缓存流程:

shuffle是MR处理流程中的一个过程,它的每一个处理步骤是分散在各个map task和reduce task节点上完成的,整体来看,分为3个操作:

1、分区partition

2、Sort根据key排序

3、Combiner进行局部value的合并

 

3.1.3详细流程

1、 maptask收集我们的map()方法输出的kv对,放到内存缓冲区中

2、 从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件

3、 多个溢出文件会被合并成大的溢出文件

4、 在溢出过程中,及合并的过程中,都要调用partitoner进行分组和针对key进行排序

5、 reducetask根据自己的分区号,去各个maptask机器上取相应的结果分区数据

6、 reducetask会取到同一个分区的来自不同maptask的结果文件,reducetask会将这些文件再进行合并(归并排序)

7、 合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法)

 

Shuffle中的缓冲区大小会影响到mapreduce程序的执行效率,原则上说,缓冲区越大,磁盘io的次数越少,执行速度就越快

缓冲区的大小可以通过参数调整,  参数:io.sort.mb  默认100M

 

 

 

3.1.4详细流程示意图

 

时间: 2024-07-30 22:16:45

mapreduce的shuffle机制(来自学习笔记)的相关文章

hibernate3.0学习笔记

hibernate3学习笔记(二十三)|进阶特性(三) hibernate3学习笔记(二十三)|进阶特性(二) hibernate3学习笔记(二十三)|进阶特性(一) hibernate3学习笔记(二十二)|Query缓存机制 hibernate3学习笔记(二十一)|二级缓存 hibernate3学习笔记(二十)|关系映射:多对多 hibernate3学习笔记(十九)|关系映射:一对一 hibernate3学习笔记(十八)|关系映射:一对多 hibernate3学习笔记(十七)|关系映射:多对一

Hadoop学习笔记(一):MapReduce的输入格式

    Hadoop学习有一段时间了,但是缺乏练手的项目,老是学了又忘.想想该整理一个学习笔记啥的,这年头打字比写字方便.果断开博客,咩哈哈~~     开场白结束(木有文艺细胞)     默认的MapReduce作业 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.Path; import org.apache.h

spring学习笔记(16)趣谈spring 事件机制[2]:多监听器流水线式顺序处理

上一篇我们使用到的ApplicationListener是无序的,结合异步调度它能满足了我们的大部分应用场景,但现在我们来个另类的需求,我们来模拟一条作业调度流水线,它不能异步,必须按照先后次序执行不同的任务才能得到我们的最终结果. 需求示例:现在假如华中科技大学的小白想要为它的智能机器人作品申报国家创新奖,需要经过学校.省级创新科研机构.国家创新科研机构逐层审核.我们尝试通过事件来实现,核心就在监听器实现SmartApplicationListener接口.示例如下: 1. 配置事件发布者小白

HDFS的工作机制,HDFS写数据流程,HDFS读数据流程(来自学习资料)

4.hdfs的工作机制 (工作机制的学习主要是为加深对分布式系统的理解,以及增强遇到各种问题时的分析解决能力,形成一定的集群运维能力)   注:很多不是真正理解hadoop技术体系的人会常常觉得HDFS可用于网盘类应用,但实际并非如此.要想将技术准确用在恰当的地方,必须对技术有深刻的理解 4.1概述 1.        HDFS集群分为两大角色:NameNode.DataNode  (Secondary Namenode) 2.        NameNode负责管理整个文件系统的元数据 3. 

两千行代码的PHP学习笔记汇总_php技巧

本文汇总了PHP学习中常见的各类问题,约有两千多行代码,都是非常实用的技巧.分享给大家供大家参考.具体如下: //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变量名建议用下划线方式分隔 // $var_name 函数名建议用驼峰命名法 // varName 定界符建议全大写 // <<<DING, <<<'DING' 文件名建议

MySQL数据库学习笔记(一)

mysql|笔记|数据|数据库         我一直从事Informix和Oracle数据库开发,有一天发现网络上有一种小巧别致的数据库,被广泛使用,从MySQL的网站http://www.mysql.com/我下载了它的数据库软件,使用过后觉得真的挺好,这是我的一点学习笔记希望对各位初学者有点帮助. 1.       MySQL数据库介绍 MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构的分布式数据库管理系统.MySQ

作为一个新手的Oracle(DBA)学习笔记

Oracle数据库笔记 Jack Chaing 作者QQ595696297 交流群 127591054 祝大家学习进步. 如果大家想看Word版本的可以去下载:Word排版比较清晰一些. http://download.csdn.net/detail/jack__chiang/9810532 此笔记是作者本人去年开始从一个DBA新人的学习笔记,积累至今,希望拿出来给那些对DBA有兴趣的童孩学习,大家一起努力嘛. 此笔记记录了作者工作学习中从零基础的学习的记录,和从中遇见的问题与问题的解决!很高兴

SQL Server学习笔记

<SQL Server从入门到精通>学习笔记 1 数据管理技术的三个阶段:人工管理.文件系统.数据库系统. 2 数据库的组成:数据库.数据库管理系统.数据库管理员.硬件平台.软件平台5部分. 3 数据库的三级模式:内模式.模式.外模式. 4 三级模式之间的映射:外模式/模式,模式/内模式. 5 常用的数据库数据模型:层次模型.网状模型.关系模型. 6 关系数据库的规范化: (1)1NF:原子性,字段不可分. (2)2NF:唯一性,有主键,非主键关键字依赖于主键. (3)3NF:去除传递依赖(非

UITableView学习笔记

转载自:http://www.cnblogs.com/smileevday/archive/2012/06/28/tableview.html UITableView学习笔记        作者:一片枫叶 看TableView的资料其实已经蛮久了,一直想写点儿东西,却总是因为各种原因拖延,今天晚上有时间静下心来记录一些最近学习的TableView的知识.下面进入正题,UITableView堪称UIKit里面最复杂的一个控件了,使用起来不算难,但是要用好并不容易.当使用的时候我们必须要考虑到后台数