理解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. 不绑架输入--document.getElementById("linkage_"+id_type+"_echo").value="";--联动

    <script> function w_linkage(id_type) { var selected = $("#linkage_"+id_type+"_t ...

  2. 版本python2和版本3.X的一个区别之一

    print函数 虽然print语法是Python 3中一个很小的改动,且应该已经广为人知,但依然值得提一下:Python 2中的print语句被Python 3中的print()函数取代,这意味着在P ...

  3. 单片机与嵌入式 以及ARM DSP FPGA 几个概念的理解

    嵌入式设备一般要满足实时性的要求,而实时性是要求数据输入和输出的延时满足一定的要求.当然嵌入式一般都便携性都比PC要好,功能没有PC多,PC是通用,他是专用,一般只专注某些功能的实现,比如DSP专注数 ...

  4. Bash 快捷键大全

    快捷键的一些说明: CTRL=C:这个键是指PC键盘上的Ctrl键 ALT=M:这个键是PC键盘上的ALT键,如果你键盘上没有这个键,可以尝试使用ESC键代替 SHIFT=S:此键是PC上的Shift ...

  5. nginx博客系统(内含nginx图片缩略图处理代码,不错)

    一直以来都在Qzone.CSDN等上面写博客,偶尔有些想法就在Paas平台上搭建服务,新浪和曾经的google上都用过其appengine.可是在别人的平台上写东西,总归有些不方便,有受制于人的感觉. ...

  6. windows bat常用命令积累

    1.判断文件夹是否为空  dir/a/b "D:\test"|findstr . >nul&&(echo 有文件)||(echo 空)   2.多层文件夹遍历 ...

  7. OO之美4(好代码与坏代码)

    前言:写代码不仅仅要做到能与机器交流,更要做到能和人交流 编码规范:编码规范就是最佳实践,是前辈在编码这件事上的积累和总结,是智慧的延续和工业的实践,如下: ⑴命名规范 ⑵避免行数过多的方法 ⑶代码缩 ...

  8. python echo服务器和客户端(客户端可以用telnet之类的)

    发上来记录一下,省得下次再写一遍 服务器:server.py #-*- coding:utf-8 -*- from SocketServer import TCPServer, BaseRequest ...

  9. 使用jQuery基本过滤选择器

    <script type="text/javascript"> $(function(){ //增加第一个元素的类别 $("li:first").a ...

  10. 什么是EBC和EBO

    EBC英文全称为“Empty Base Class”,中文全称“空基类”.那什么是空基类呢?简单的说就是没有任何数据成员的类就称之为空基类.也就是EBC的类定义中不包含任何数据成员,那么这样一来可能大 ...