MapReduce

MapReduce概述

MapReduce是一种分布式并行编程框架

摩尔定律从2005年左右开始逐渐失效

MapReduce体系结构

TaskTracker是以什么方式来衡量自己的资源使用情况?使用一个slot(槽)的概念,它把机器上面的所有的CPU内存资源进行打包,然后把资源进行等分,等分成很多个slot

MapReduce工作流程

      MapReduce擅长处理大数据,它为什么具有这种能力呢?这可由MapReduce的设计思想发觉。MapReduce的思想就是“分而治之”

  (1)Mapper负责“分”,即把复杂的任务分解为若干个“简单的任务”来处理。

  (2)Reducer负责对map阶段的结果进行汇总。Reduce(归约)

 

一个比较形象的语言解释MapReduce:  

我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。

现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

 

输入时来源于分布式文件系统HDFS,输出也是写入到HDFS

map任务是key-value形式的

不同的map之间和不同的reduce任务之间都是不会进行通信的

把map输出的结果进行分区排序归并合并,这个过程叫shuffle,shuffle过程结束之后才会把响应的结果分发给reduce

map任务的数量就是有分片数量决定的

Shuffle过程原理

文件存储格式可能是文本格式文件,或者是二进制文件,各种格式的文件都有,但最终都可以通过RecordReader阅读器生成满足Map函数需要的key-value形式,输入给Map函数

排序是自动按照key的字典序排序

合并不是必须的,是用户定义的

合并是把(a,1)(a,1)合并成(a,2)

归并是生成一个(key,value-list),就是生成一个(a,(1,1,1))的格式,把值构成列表value-list,这叫归并

MapReduce应用程序执行过程

分为6个步骤:

①用户编写了一个MapReduce应用程序,把程序分布到不同的机器上。从整个集群中选出相关机器

     Master和Worker

    Master只有一个,其他机器作为Worker。

    Master机器作为一个管家的角色,上面运行JobTracker

    Worker可以执行Map任务,也可以执行Reduce任务

②选择一部分Worker执行Map任务,另外一部分Worker执行Reduce任务

对于执行Map任务的机器,需要给他输入数据,而输入数据一般都是一个非常大的文件,所以我们要对它进行拆分,要对一个大的数据集进行分片。我们需要从执行Map任务的机器中选出几个空闲的机器去执行数据分片的处理

③从HDFS各个分片中把数据读入,读入以后生成相关的(key,value)键值对,然后提交给Map任务去执行。Map里面包含了用户编写的应用程序处理逻辑,然后会输出一堆的相关的(key,value),输出结果不是直接写入磁盘,也不是直接发送给Reduce任务,而是先写到缓存

④把缓存中的数据写到磁盘。缓存中的数据一旦写满后,会溢写到磁盘(缓存中的数据经过分区排序或者可能发生的合并操作,再把它写入到磁盘中去)。写到磁盘以后就生成一个大的文件,这个文件中包含的是很多个分区的数据,并且都是排序合并以后的数据,这些数据最终发送到远端的reduce任务去处理

⑤负责执行相关Reduce任务的机器会从各个相关的map任务机器,把属于自己处理的数据拉回去,拉回到本地进行相关的处理,处理完以后执行用户自定义的reduce函数,完成数据处理,处理结果就是一堆的键值对

⑥把相关的结果写到输出文件(HDFS)当中去

实例分析:WordCount

对一个大的文本文件中的单词进行词频统计

并不是所有任务都能用MapReduce去解决,只有能够满足分而治之的任务,才能够用MapReduce去做。也就是说,可以把一个大的块,切分成很多小的块,这些小的块分别放在不同机器上并行执行,彼此结果不依赖对方的结果,这样的可以用MapReduce去做。

如果数据之间结果相互依赖,就不能用MapReduce去做了

没有定义combine函数

定义combine函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值