您的位置:首页 > 运维架构

hadoop学习笔记--6.MapReduce的初识

2017-05-29 17:04 295 查看
一、MapReduce的概念
1.1 MapReduce的起源

MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。通过对大数据计算模型的封装,使得开发者降低开发难度。基于该框架能够容易地编写应用程序,这些应用程序能够运行在由上千个商用机器组成的大集群上,并且以可靠性高,容错率高的方式并行处理大批数据。

1.2 MapReduce的作用

MapReduce简单来说就是大数据处理,即接收批量数据,然后根据用户的需求返回结果集。以价值为导向,对数据进行加工,处理,挖掘和优化等。

MapReduce的核心思想即为“先分后汇”,MapReduce分为Mapper和Reduce。Mapper主要负责“分”,将一个复杂的任务根据一定的逻辑分为若干个简单的小任务。这个逻辑包括:1:将任务分配到就近的数据节点进行计算,以减少数据传输所需的时间和带宽。2:小任务之间彼此没有联系,可以单独计算工作。

Reduce主要对Mapper阶段的结果集按用户的需求进行汇总。,用户可以根据具体问题,通过在mapred-site.xml配置文件里设置参数mapred.reduce.tasks的值,缺省值为1。

网上的一张图片,这个非常的生动形象。



1.3 MapReduce的特点

1:易于编程

2:良好的扩展性

3:高容错性

4:适合PB级以上海量数据的离线处理

5:不适合实时计算,无法在短时(毫秒级或秒级)返回结果。

6:不适合流式计算

(1):MapReduce的输入数据是静态的,不能支持动态改变。

(2):MapReduce自身的设计特点决定了数据源必须是静态的

二、MapReduce的原理
2.1 MapReduce的键值对

为了适应多样化的数据环境,MapReduce将关键字/值数据对(Key-Value Pair)作为基础数据单元。关键字和值可以是简单的基本数据类型,例如整数,浮点数,字符串等,也可以是复杂的数据结构,例如列表,数组等。

Mapper阶段和Reduce阶段都将关键字/值作为输入输出,其中Mapper阶段首先是遍历输入数据,并将之解析为关键字/值对作为Mapper的输入。

2.2 MapReduce的处理过程

首先上一张图,这张图表示的非常清楚。



MapReduce的基本处理过程表示如下:

(1):遍历输入数据,并将之解析成Key/Value对。MapReduce应用将这些Key/Value对拆分为单独的Key/Value对,分发给对应的Mapper进行处理。

(2):Mapper根据函数定义,对《K1,V1》进行处理,生成[《K2,V2》]列表。

(3):所有的Mapper的处理结果聚合在一起构成一个大的[《K2,V2》]列表,这个列表中相同的关键字的数据会被合并作为一个新的关键字/值数据对《K2,[V2]》,即K2,和一系列的V2。

(4):Reduce按照函数定义的处理过程,对这些新数据再一次进行处理,获得最终的处理结果,并与《k3,V3》列表输出。

注:以上的《》,在实际过程中应该为英语的符号。

2.3 MapReduce的实例分析

本实例对手机网站访问的数据进行分析。



此表格数据包括了用户的手机号,访问网站的信息,流量以及访问时间。结果是为了获取每个用户各自使用流量的总值。MapReduce的流量统计处理流程图如下所示。



输入的数据经过划分后由3个Mapper函数分别处理,Mapper函数的功能是为了提取文件中每行数据中的手机号和流量。mapper处理后的中间数据在MapReduce运行环境中经过排序,分组和合并后,生成了以手机号码为关键字,流量列表为值的数据对,输入至Reduce的函数,Reduce函数需要做的是将流量列表中的每个流量值相加,运算后即得到最终结果。

参考资料
(1):刘军,《Hadoop大数据处理》

(2):周旭龙,《Hadoop学习笔记》

http://www.cnblogs.com/edisonchou/p/4287784.html

(3)伯乐在线,《我是如何向老婆解释MapReduce的》:

http://blog.jobbole.com/1321/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop mapreduce 大数据