MapReduce中数据流动
   (1)最简单的过程:  map - reduce

   (2)定制了partitioner以将map的结果送往指定reducer的过程: map - partition - reduce

   (3)增加了在本地先进性一次reduce(优化)过程: map - combin(本地reduce) - partition -reduce



map函数的处理结果放在内存中,这个内存也称为环形缓冲区,缓冲区达到80%的时候会形成溢写,一边向磁盘写入,一般接受map输出,具体流程是一个管道机制



map  数据  先写入缓冲区在内部排序,当达到一定的大小再写入磁盘。如果每次都要写入,那消耗太大,不实际。缓冲期的大小是调优的重要方面,当map中间结果很大,适当调大缓冲区



combiner流程再此之前



所有的map处理完成之后才会执行reduce吗?

答案:否,reduce会执行一个预处理,reduce预处理已经处理完毕的map节点 ,比如进行数据整理



等所有的数据过来 才开始真正的reduce计算



buffer缓冲区满了(80%)就往磁盘写的那个过程叫做溢写。



分区的目的是根据Key值决定Mapper的输出记录被送到哪一个Reducer上去处理。而分组的就比较好理解了。分组就是与记录的Key相关。在同一个分区里面,具有相同Key值的记录是属于同一个分组的。



对于一般的键,只需要key值相同,则对应的value就会分配至同一个 reduce中;

对于复合键,形式为TextPair<key1,key2>,通过控制 key1来进行分区,则具有相同的 key1的值会被划分至同一个分区中,但此时如果 key2不相同,则不同的key2会被划分至不同的分组

mapreduce流程中的几个关键点的更多相关文章

  1. Yarn源码分析之MapReduce作业中任务Task调度整体流程(一)

    v2版本的MapReduce作业中,作业JOB_SETUP_COMPLETED事件的发生,即作业SETUP阶段完成事件,会触发作业由SETUP状态转换到RUNNING状态,而作业状态转换中涉及作业信息 ...

  2. mapreduce任务中Shuffle和排序的过程

    mapreduce任务中Shuffle和排序的过程 流程分析: Map端: 1.每个输入分片会让一个map任务来处理,默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片,当然我们也可以设置 ...

  3. hadoop-初学者写map-reduce程序中容易出现的问题 3

    1.写hadoop的map-reduce程序之前所必须知道的基础知识: 1)hadoop map-reduce的自带的数据类型: Hadoop提供了如下内容的数据类型,这些数据类型都实现了Writab ...

  4. git 一般的开发流程中的代码管理

    一般的开发流程中的代码管理 1. 从版本库中下载代码 git clone ssh://wenbin@192.168.1.3:29418/mustang-web 2. 针对某个feature(比如ins ...

  5. 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构) (转)

    转自:http://blog.csdn.net/v_july_v/article/details/6704077 从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到 ...

  6. Java前辈:学习J2EE流程中的经验和教训

    Java前辈:学习J2EE流程中的经验和教训   在这里我谈谈我在学习j2ee流程,并谈到在此过程中领会的经验和教训.以便后来者少走弯路. Java发展到现在,按应用来分主要分为三大块:J2SE,J2 ...

  7. UI产品设计流程中的14个要点

    http://www.sj33.cn/digital/wyll/201404/38318.html 自从我在 Dribbble 上贴了一幅我的产品设计成果,受到了大家伙热烈的反馈,对此我深受鼓励,我决 ...

  8. matchmove流程中修改Maya相机数据的脚本

    matchmove组的流程涉及到syntheyes与maya,nuke交接的问题.syntheyes会生成包含去畸变节点的nuke工程 和带跟踪信息的maya工程.在nuke工程上渲染得到去畸变的序列 ...

  9. Hadoop之MapReduce流程

    hadoopMapReduce 1. MapReduce流程 2. Shuffle流程 1. MapReduce流程 MapReduce流程 切片: 对数据进行逻辑划分,默认大小是一个block块大小 ...

随机推荐

  1. 项目中初试PHP单元测试

    只能叫初试,前面虽然做了一些PHPUnit与团队所用框架的整合,但在整个团队还没有人可以主动推动这个事情,而作为Leader最重要的一种能力应该是"让正确的事情发生",所以今天开始 ...

  2. Intellij Idea上传本地项目到Git

    方法一:选择菜单VCS-Import into Version Control - Share project on Github,填写仓库名和github账户之后,点击"Share&quo ...

  3. 深入浅出Java多线程

    Java给多线程编程提供了内置的支持.一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 多线程是多任务的一种特别的形式,但多线程使用了 ...

  4. Cookie——Javascript

    基本的cookie操作有三种:读取.写入.删除. var CookieUtil = { //根据cookie的name获取相应的value.它会在document.cookie字符串中查找cookie ...

  5. mongodb数据库备份导入导出数据

    备份数据: mongodump -h 192.168.2.20 -u game -p 12345678 -d dbname -o /data/test/ --excludeCollection=use ...

  6. Guava学习笔记:Immutable(不可变)集合

    不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客 ...

  7. Lua-泛型for循环 pairs和ipairs的区别

    先看一段简单的代码: local mytable = { , , aa = "abc", subtable = {}, , } --for循环1 print("for - ...

  8. Hello.js – Web 服务授权的 JavaScript SDK

    Hello.js 是一个客户端的 Javascript SDK,用于实现 OAuth2 认证(或者基于 OAuth 代理实现的 OAuth1)的 Web 服务和查询 REST API. HelloJS ...

  9. MagicSuggest – Bootstrap 主题的多选组合框

    MagicSuggest 是专为 Bootstrap 主题开发的多选组合框.它支持自定义呈现,数据通过 Ajax 异步获取,使用组件自动过滤.它允许空间免费项目,也有动态加载固定的建议. 您可能感兴趣 ...

  10. 【小贴士】zepto find元素以及ios弹出键盘可能让你很头疼

    前言 在此,我不得不说移动端的兼容问题很多,并且很令人头疼,这不,这个星期又有两个让我逮着了,一个是使用zepto过程中出现的问题,一个是ios虚拟键盘的问题 我这里做一次记录,以免以后忘了,同时希望 ...