理解MapReduce

Hadoop的MapReduce过程具有如下形式:

          1) map: (K1, V1) => list(K2, V2)
          2) reduce: (K2, list(V2)) => list(K3, V3)

我用一个简单的例子说明它表示的含义:

假设待分析的数据文件是一个用户名和密码的表,即"用户名,密码"格式:

========= input.dat=========

zhang,123456

wang,qazxsw

liu,123456

meng,xxx123

hunan,qazxsw

chin,qazxsw

feifei,1008xyz

... ...

==========================

那么我们要求统计出密码使用的次数大于1次的,即最终可以得到下面的结果:

123456=2

qazxsw=3

用MapReduce可以这样做:

第1步:Map

protected void map(LongWritable key, Text value, Context context);

Map的输入(K1, V1)默认是(文件行号,文件行),即map函数每次得到的输入都是下面的形式:

(key=>K1, value=>V1)

第1次:(0,  "zhang,123456")

第2次:(1, "wang,qazxsw")

第3次:(2, "liu,123456")

第4次:(3, "meng,xxx123")

...

我们需要在map函数的value参数V1中,提取出密码作为输出的K2=>key,而输出的value是1(次数),

表示一个用户使用了这个密码=>K2。

map运行完后得到了下面的结果:list(K2, V2),即:

K2        (V2)

123456(1)

qazxsw(1)

123456(1)

xxx123(1)

qazxsw(1)

qazxsw(1)

1008xyz(1)

这个输出被系统自动归并为K2=>list(V2),即:

123456=>(1,1)

qazxsw=>(1,1,1)

xxx123=>(1)

1008xyz=>(1)

这个(K2, list(V2)) 接着作为reduce的输入。

第2步:Reduce

protected void reduce(Text key, Iterable<IntWritable> values, Context context);

reduce函数的输入既然是key=K2, value=list(V2),那么我们就可以把每个K2下的list(v2)的元素相加,得到下面的结果:

123456=>(2)

qazxsw=>(3)

xxx123=>(1)

1008xyz=>(1)

我们只保留次数大于1的,所以最后的reduce输出为:

123456=>(2)

qazxsw=>(3)

这个就是:list(K3, V3)。这里K3与K2类型一致,V3与V2类型一致。

以上就是Map Reduce的全过程。

理解MapReduce

理解MapReduce的更多相关文章

  1. MapReduce剖析笔记之一:从WordCount理解MapReduce的几个阶段

    WordCount是一个入门的MapReduce程序(从src\examples\org\apache\hadoop\examples粘贴过来的): package org.apache.hadoop ...

  2. 理解MapReduce哲学

    Google工程师将MapReduce定义为一般的数据处理流程.一直以来不能完全理解MapReduce的真义,为什么MapReduce可以“一般”? 最近在研究Spark,抛开Spark核心的内存计算 ...

  3. 彻底理解MapReduce shuffle过程原理

    彻底理解MapReduce shuffle过程原理 MapReduce的Shuffle过程介绍 Shuffle的本义是洗牌.混洗,把一组有一定规则的数据尽量转换成一组无规则的数据,越随机越好.MapR ...

  4. 2本Hadoop技术内幕电子书百度网盘下载:深入理解MapReduce架构设计与实现原理、深入解析Hadoop Common和HDFS架构设计与实现原理

    这是我收集的两本关于Hadoop的书,高清PDF版,在此和大家分享: 1.<Hadoop技术内幕:深入理解MapReduce架构设计与实现原理>董西成 著  机械工业出版社2013年5月出 ...

  5. hadoop2.2编程:从default mapreduce program 来理解mapreduce

    下面写一个default mapreduce 的程序: import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapr ...

  6. 实例理解mapreduce任务的串行运行过程

    一.准备: eclipse,hadoop集群 注意:为了方便测试和修改,我用的是 windows 连接hadoop集群,这样在windows 下直接就能够执行 mapreduce 任务,方便程序调试. ...

  7. 大数据技术 - 通俗理解MapReduce之WordCount(三)

    上一章我们编写了简单的 MapReduce 程序,掌握这些就能编写大多数数据处理的代码.但是 MapReduce 框架提供给用户的能力并不止如此,本章我们仍然以上一章 word count 为例,继续 ...

  8. 大数据技术 - 通俗理解MapReduce之WordCount(二)

    上一章我们搭建了分布式的 Hadoop 集群.本章我们介绍 Hadoop 框架中的一个核心模块 - MapReduce.MapReduce 是并行计算模块,顾名思义,它包含两个主要的阶段,map 阶段 ...

  9. 深入理解MapReduce的架构及原理

    1. MapReduce 定义 Hadoop 中的 MapReduce是一个使用简单的软件框架.基于它写出来的应用程序能够执行在由上千个商用机器组成的大型集群上,并以一种可靠容错式并行处理TB级别的数 ...

随机推荐

  1. 解决Windows照片查看器中图片显示发黄的问题

    这其实是ICC颜色配置的问题,发生在Windows7自动更新下载了显示器的驱动后,自动安装后显示器的颜色配额制文件自动改为新下载的配置,导致显卡和显示器颜色配置不兼容的问题,不过不用担心,非常容易解决 ...

  2. 使用 PHP 限制下载速度

    使用 PHP 限制下载速度 [来源] 达内    [编辑] 达内   [时间]2012-12-12 经常遇到一个问题,那就是有人再办公室下载东西,影响大家上网.办公.同样的问题,要是出现在了服务器上面 ...

  3. 【Xamarin Doc】 Introduction to Storyboards 笔记

    http://developer.xamarin.com/guides/ios/user_interface/introduction_to_storyboards/ Segues There are ...

  4. 每个配置xml的含义作用

    参考链接 web.xml xxx-servlet.xml(例如:dispatcher-servlet.xml)是Spring MVC里的,控制器,拦截url,转发view,对应的是controller ...

  5. pdo封装类

    <?php //http://www.imavex.com/php-pdo-wrapper-class/ class db extends PDO { private $error; priva ...

  6. [daily][device] linux挂载iphone

    头几个月去旅游,亲戚的iphone照了好多照片,空间不足.就备份在了我的电脑上. 那么问题就是如何在linux系统里挂载iphone? 我找到了这篇文档,然而我没看. https://wiki.arc ...

  7. 获取枚举Description 属性

    /// <summary> /// 获取枚举变量值的 Description 属性 /// </summary> /// <param name="obj&qu ...

  8. .NET 可空值类型

    Microsoft在CLR中引入了可空值类型(nullable value type)的概念. FCL中定义System.Nullable<T>类如下: [Serializable,Str ...

  9. 获取表单的初始值,模拟placeholder属性

    input和textarea有一个默认属性defaultValue,即初始值. 即使在页面操作修改了input和textarea的内容,获取到的defaultValue依然是初始值.可通过该值模拟pl ...

  10. css“变形”效果

    <html <head> <title></title> <style> .test { margin-left:300px; margin-to ...