几分钟,让你理解MapReduce 1框架概念

           假期里,没什么事干,那就写一下blog。梳理一下MapReduce 1 的基本概念,仅供参考。


      上面这个图,基本上可以说明MapReduce的工作流程。下面细说,并举了一个实例。

      MapReduce工作就是将处理过程划分为两个阶段:map阶段和reduce阶段。每个有key-value对作为输入和输出,其类型是由程序员选择的。程序员能够指定有个函数:map函数和reduce函数。

      举一个简单的例子,具体说明MapReduce的工作细节。假设有一堆天气数据需要处理,而我们仅对天气数据中的年份和气温字段信息感兴趣。一个map函数的功能就是一个数据准备阶段,准备好Reduce阶段能够处理的数据,而reduce函数将一年中的多个气温(temperature)数据中取最大的值。map函数需要将错误数据以及一些不符合规则的数据给过滤掉,筛选出有效数据,传送给reduce阶段进行处理。

    为了可视化map的工作,假设有下列输入文件中的多行记录数据

0067011990999991950051507004...9999999N9+00001+99999999999...
0043011990999991950051512004...9999999N9+00221+99999999999...
0043011990999991950051518004...9999999N9-00111+99999999999...
0043012650999991949032412004...0500001N9+01111+99999999999...
0043012650999991949032418004...0500001N9+00781+99999999999...


    到了map函数处理阶段,数据就变成key-value对。

(0, 0067011990999991950051507004...9999999N9+00001+99999999999...)
(106, 0043011990999991950051512004...9999999N9+00221+99999999999...)
(212, 0043011990999991950051518004...9999999N9-00111+99999999999...)
(318, 0043012650999991949032412004...0500001N9+01111+99999999999...)
(424, 0043012650999991949032418004...0500001N9+00781+99999999999...)


    关键字是线性偏离,我们在map函数中可以忽略。map 复制抓取到对应year和temperature字段,最后发布给对应的reduce函数作进一步处理。提交的数据如下:

(1950, 0)
(1950, 22)
(1950, −11)
(1949, 111)
(1949, 78)


     在发送到reduce函数处理前,这个输出会被MapReduce框架处理。MapReduce框架的处理包括以关键字进行排序和分组等。在reduce处理前,看到的数据就是这样:

(1949, [111, 78])
(1950, [0, 22, −11])


     reduce函数将根据关键字来迭代value,选出最大的值作为key的value,并将这对值输出。

(1949, 111)
(1950, 22)


     上面便是最终的输出结果序列。整个处理过程可以用下列这个流程图来说明。



     后续将介绍MapReduce 2,即YARN(hadoop 2新推出的架构)。待续!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值