MapReduce 过程分析
原文地址:http://blog.jobbole.com/81676/
2、WordCount处理过程
上面给出了WordCount的设计思路和源码,但是没有深入细节,下面对WordCount进行更加详细的分析:
(1)将文件拆分成splits,由于测试用的文件较小,所以每一个文件为一个split,并将文件按行分割成<key, value>对,如图,这一步由Mapreduce框架自动完成,其中偏移量包括了回车所占的字符
(2)将分割好的<key, value>对交给用户定义的map方法进行处理,生成新的<key, value>对
(3)得到map方法输出的<key, value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key值相同的value值累加,得到Mapper的最终输出结果,如图:
(4)Reduce先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的<key, value>对,并作为WordCount的输出结果,如图:
解释2
原文地址: http://www.cnblogs.com/archimedes/p/mapreduce-principle.html
MapReduce方法则是:
给在座的所有玩家中分配这摞牌
让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你
你把所有玩家告诉你的数字加起来,得到最后的结论
mapReduce 是计算模型,计算模型就有输入和输出。 键值对输入, 键值对输出,而且中间每一个环节都是键值对的输入输出。
1. 将大任务差分成小任务。
2.分发任务到不同机器上,输入<文件名,查找内容>
3.每个机器,map 接受<文件名,查找内容> 输出<查找内容,1>
4.reduce 接受每个机器的map的结果,进行统计汇总,得出<查找内容,N>
MapReduce 过程分析的更多相关文章
- Hadoop mapreduce过程分析
原理图: 中间结果的排序与溢出(spill)流程图 map分析: (1).输入分片(input split):在进行mapreduce之前,mapreduce首先会对输入文件进行输入分片(input ...
- cloudera learning8:MapReduce and Spark
YARN:Yet Another Resource Negotiator, Hadoop集群的资源管理器,可以对运行在Hadoop上的MapReduce V2,Spark,Impala等进行内存和CP ...
- Mapreduce执行过程分析(基于Hadoop2.4)——(三)
4.4 Reduce类 4.4.1 Reduce介绍 整完了Map,接下来就是Reduce了.YarnChild.main()—>ReduceTask.run().ReduceTask.run方 ...
- Mapreduce执行过程分析(基于Hadoop2.4)——(二)
4.3 Map类 创建Map类和map函数,map函数是org.apache.hadoop.mapreduce.Mapper类中的定义的,当处理每一个键值对的时候,都要调用一次map方法,用户需要覆写 ...
- Mapreduce执行过程分析(基于Hadoop2.4)——(一)
1 概述 该瞅瞅MapReduce的内部运行原理了,以前只知道个皮毛,再不搞搞,不然怎么死的都不晓得.下文会以2.4版本中的WordCount这个经典例子作为分析的切入点,一步步来看里面到底是个什么情 ...
- Mapreduce运行过程分析(基于Hadoop2.4)——(一)
1 概述 该瞅瞅MapReduce的内部执行原理了,曾经仅仅知道个皮毛,再不搞搞,不然怎么死的都不晓得.下文会以2.4版本号中的WordCount这个经典样例作为分析的切入点.一步步来看里面究竟是个什 ...
- Mapreduce运行过程分析(基于Hadoop2.4)——(二)
4.3 Map类 创建Map类和map函数.map函数是org.apache.hadoop.mapreduce.Mapper类中的定义的,当处理每一个键值对的时候,都要调用一次map方法,用户须 ...
- Mapreduce运行过程分析(基于Hadoop2.4)——(三)
4.4 Reduce类 4.4.1 Reduce介绍 整完了Map,接下来就是Reduce了.YarnChild.main()->ReduceTask.run().ReduceTask.run方 ...
- wordCount程序中MapReduce工作过程分析
Map处理的是一个纯文本.Mapper处理的数据是由InputFormat分解过的数据集,其中InputFormat的作用是将数据集切割成小数据集InputSplit,每一个InputSplit将由一 ...
随机推荐
- [wxWidgets] 2. 重访“Hello World” 程序
这是四年多来在博客园的第二篇博客.有了上一次的排版使用经验,这一篇文章应该有些进步(^_^). 闲话按下不表,言归正传.在编译.成功运行了上一个helloWorld.cpp(后文中'hw'简称hell ...
- python---dnspython
dnspython 是Python实现的一个DNS工具包,支持几乎所有的记录类型,可以用于查询,传输并动态更新ZONE信息,同时支持TSIG(事务签名)验证消息和EDNS0(扩展DNS).可以替代ns ...
- java 泛型编程学习
先发布,以后有空再修改... 第一次看到<java核心技术卷一>中关于泛型这部分的时候感觉很复杂,似乎有说不完的约束条件,让人难以理解.当时只是囫囵吞枣般过了一遍,也没有看出个什么来.现在 ...
- AttributeError: type object '_io.StringIO' has no attribute 'StringIO'
python2导入StringIO模块,直接: from StringIO import StringIO 对于python3,StringIO和cStringIO模块已经没了,如果要使用的话,需要导 ...
- Sql Server中Float格式转换字符串varchar方法(转)
1.[Sql Server](70) SELECT CONVERT(varchar(100), CAST(@testFloat AS decimal(38,2)))SELECT STR(@testF ...
- 那些年蹚过的坑(c++)
1 main中的参数 尽量用英文双引号括起来,否则可能会出现字符串截断的情况(linux gcc 4.4 不加英文引号的话,遇到英文;会丢弃;后面的部分) 2 包含ipv6地址结构体(in6_addr ...
- php面向对象学习笔记
PHP 面向对象技术(全面讲解) Ø 主要内容 v 1.面向对象的概念 v 2.什么是类,什么是对象,类和对象之间的关系 v 3.什么是面向对象编程呢? v 4.如何抽象出一个类? v 5.如何实例化 ...
- 安装centOS分区的图解记录
要将linux的boot loader安装在MBR上,才能起到多重引导的作用.
- SQL Server 2008 R2企业版开发版等版本下载 (转载)
一. 简体中文 1. SQL Server 2008 R2 Developer (x86, x64, ia64) - DVD (Chinese-Simplified) File Name: cn_sq ...
- Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
<script type="text/javascript"> $('input:text:first').focus(); document.onkeydown = ...