1.Partition

把 Map任务输出的中间结果按 key的范围划分成 R份( R是预先定义的 Reduce任务的个数),划分时通常使用hash函数如: hash(key) mod R,这样可以保证某一段范围内的key,一定是将会由一个Reduce任务来处理,这样可以简化 Reduce获取计算数据的过程。

2.Combine操作

在 partition之前,还可以对中间结果先做 combine,即将中间结果中有相同 key的 对合并成一对。combine的过程与 Reduce的过程类似,很多情况下就可以直接使用 Reduce函数,但 combine是作为 Map任务的一部分,在执行完 Map函数后紧接着执行的,而Reduce必须在所有的Map操作完成后才能进行。Combine能够减少中间结果中 对的数目,从而减少网络流量。

3.Reduce任务从 Map任务结点取中间结果

Map 任务的中间结果在做完 Combine和 Partition之后,以文件形式存于本地磁盘。中间结果文件的位置会通知主控 JobTracker,JobTracker再通知 Reduce任务到哪一个DataNode上去取中间结果。注意所有的 Map任务产生中间结果均按其 Key用同一个 Hash函数划分成了 R份,R个 Reduce任务各自负责一段 Key区间。每个 Reduce需要向许多个原Map任务结点以取得落在其负责的Key区间内的中间结果,然后执行 Reduce函数,形成一个最终的结果文件。

4.任务管道

有R个 Reduce任务,就会有 R个最终结果,很多情况下这 R个最终结果并不需要合并成一个最终结果。因为这 R个最终结果又可以做为另一个计算任务的输入,开始另一个并行计算任务

Hadoop中Combiner的作用的更多相关文章

  1. Hadoop中Combiner的使用

    注:转载自http://blog.csdn.net/ipolaris/article/details/8723782 在MapReduce中,当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给 ...

  2. hadoop中Combiner使用中需要注意的地方

    今天在写一个MR的时候,用到了combiner.在使用过程中,遇到了一些问题,特此记录一下. Combiner分为两种,一种是可插拔的,一种是不可插拔的. 可插拔的:Combiner和Reduce的处 ...

  3. hadoop中的方法的作用

    /*  * InputFormat类:  *   * 作用:  * 1.设置输入的形式;  * 2.将输入的数据按照相应的形式分割成一个个spilts后再进一步拆分成<key,value> ...

  4. hadoop集群中zkfc的作用和工作过程

    一. 简单了解NameNode的ZKFC机制 NameNode的HA可以个人认为简单分为共享editLog机制和ZKFC对NameNode状态的控制 一般导致NameNode切换的原因 ZKFC的作用 ...

  5. 一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

    1:首先搞好实体类对象: write 是把每个对象序列化到输出流,readFields是把输入流字节反序列化,实现WritableComparable,Java值对象的比较:一般需要重写toStrin ...

  6. 【Hadoop】Combiner的本质是迷你的reducer,不能随意使用

    问题提出: 众所周知,Hadoop框架使用Mapper将数据处理成一个<key,value>键值对,再网络节点间对其进行整理(shuffle),然后使用Reducer处理数据并进行最终输出 ...

  7. Hadoop中的Partitioner浅析

    转自:http://blog.csdn.net/b1198103958/article/details/47169105 Hadoop里面的MapReduce编程模型,非常灵活,大部分环节我们都可以重 ...

  8. Hadoop中HDFS的管理

    本文讲述怎么在Linux Shell中对HDFS进行操作. 三种命令格式: hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统 hadoop dfs只能适用于HDFS文件系 ...

  9. Hadoop中两表JOIN的处理方法(转)

    1. 概述 在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的.而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的 ...

随机推荐

  1. man手册使用

    1.是普通的命令 2.是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件) 3.是库函数,如printf,fread 4.是特殊文件,也就是/dev ...

  2. 通过注册表查找oracle_home的位置

    运行regedit进入注册表 ctrl+f查找oracle_home

  3. 10+ 最流行的 jQuery Tree 菜单插件

    jstree – jQuery Tree Plugin With HTML & JSON Data jstree is a lightweight and flexible jQuery pl ...

  4. [转载]用.NET开发的磁力搜索引擎——Btbook.net

    去年10月份开始研究相关的协议与资料,中途乱七八糟的事情差点没坚持下来,寒假里修修补补上礼拜把Btbook发布了,经过社交网络的推广之后,上线第三天UV就达到了两万多,也算是对这几个月工作的一点肯定吧 ...

  5. The 7th Zhejiang Provincial Collegiate Programming Contest->Problem B:B - Somali Pirates

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3323 题意:去掉字符串里面的数字然后按输入顺序输出 #include< ...

  6. ZOJ 3778 Talented Chef

    题目链接 题意 : 这个人需要做n道菜,每道菜Ai步,他可以同时做M道不同的菜的其中一步,问你最少需要多少时间能做完所有的菜. 思路 : 这个题比赛的时候禁锢思路了,根本没想出来,就是当M > ...

  7. DJANGO的ORM的Q查询作多字段外键的模糊查询样码

    工作中用到的,存照一下. from django.db.models import Q if self.kwargs.has_key('search_pk'): search_pk = self.kw ...

  8. easyui源码翻译1.32--datagrid(数据表格)

    前言 此前网上有easyui1.25的源码  应该算是比较老的版本  之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34  1.33开始支持css3 算是又一个转折  但是 ...

  9. [itint5]Excel数转换

    http://www.itint5.com/oj/#23 这里就是26进制的转换,但是要注意没有0,A就是1,Z就是26.所以要想象成从0开始,才能用原来的方法计算. //将十进制数转换为excel数 ...

  10. [itint5]三数和为0

    http://www.itint5.com/oj/#20 其实是3sum的变种,有重复数字,但是一开始还是写错了.其实是选定一个后,在右边剩余数组里找2sum,找到一组后继续找. #include & ...