Hadoop中MapReduce运行原理

本文介绍了MapReduce这一分布式计算模型的基本概念,包括其在搜索领域的应用背景,以及如何通过实现map()和reduce()两个核心函数来解决大规模数据计算的问题。文章详细阐述了MR程序的编写流程,从Mapper阶段的输入解析到Reducer阶段的最终输出。

1. MR基本概念

MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题。
MapReduce由两个阶段组成:Map阶段和Reduce阶段,用户只需要实现map()和reduce()两个函数,即可实现分布式计算。
map()和reduce()的形参都是<key,value>对,表示方法的输入信息,其中map()方法的输入是整个系统的输入,reduce()方法的输出是整个系统的输出。

2. MR中的map()和reduce()如何编写

map()编写逻辑:

1)获取日志的一行数据
2)切割各个字段,获取所需字段
3)若所需字段过多,可以考虑使用hadoop中自定义的数据类型进行封装处理
4)reduce()编写逻辑就是遍历<key,value>对中的value,进行相应的处理,形成<key2,value2>

3. MR程序的基本编写流程

Mapper阶段:

1)读取文件 解析成key,value对,这里key,value对指的是key1,value1
2)自定义Map逻辑 接收第一步读取的key1,value1,转换成新的key,value对,即key2,value2

shuffle阶段:

3)分区 相同key的数据发送到同一个reduce形成一个集合,这里的key指代是key2
4)排序 对数据进行字典顺序的排序
5)规约 主要是对Map端对数据进行一次聚合,减少输出key2的数据量
6)分组 将相同的数据发送到同一组,调用一次Reduce逻辑

Reducer阶段:

7)自定义Reduce逻辑,接收key2,value2转换成新的key3,value3进行输出
8)输出 将Reduce处理完成的数据进行输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值