Hadoop学习--深入理解MapReduce

本文详细介绍了Hadoop MapReduce的原理与工作流程,包括Map、Reduce和Combiner组件的作用。Map负责原始输入到中间输出的计算,Reduce处理Map的输出并得到最终结果,Combiner则用于优化数据传输,但使用时需要注意对计算结果的影响。通过实例解释了MapReduce在分布式环境中的工作方式。
摘要由CSDN通过智能技术生成

目录

1.概述

2.Map

2.1 工作原理

2.2 如何进行分布式处理

3.Reduce

3.1 一个Reduce的情况

3.2 多个Reduce

4.Combiner函数

4.1 combiner函数的原理

4.2 combiner函数的限制


1.概述

MapReduce是一个用java编写的分布式的计算编程框架,其主要由三个组件构成,分别为MapReduce和负责调度前两者运行的Driver这三者去共同处理一个从输入到输出(键值对)的计算过程。有时候我们为了优化MapReduce作业,会在Map和Reduce之间加上一个Combiner组件,下面给出MapReduce从输入到输出的一个流程模型。

由上图可以看到,从最原始的键值对输入到最后的键值对输出数据一共经历了四个阶段,分别由三个组件进行处理,下面分别来详细讨论map、reduce、combine在MapReduce框架中所扮演的角色及其工作原理。

2.Map

2.1 工作原理

map负责原始输入到中间输出的计算过程,所以map的主要工作是对原始输入数据进行提取,进行排序后(根据键的字典序)形成中间结果的键值对输出,并将中间结果传递给下一个组件(combine或者reduce)。

下面结合样本数据来讨论Map的工作原理:

假设有一个文本文件记录着某地区1949年和1950年的气温数据,每一行记录着年份信息和气温,我们需要计算1949年和1950年的最高气温。

首先map函数以键值对的形式接收文件中每一行的数据,key为每一行起始位置相对于文件起始位置的偏移量,value为每一行的具体数据。map函数将对value进行处理,提取出每一行中的年份信息和对应的气温值,组成键值对,假设提取出的数据为:

(1950,0)

(1950,22)

(1950,-11)

(1949,111)

(1949,78)

map函数将对上述键值对根据key的字典序进行排序后传递给下一个组件。

 2.2 如何进行分布式处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值