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

一、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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值