面试那点事之白话叙说mapreduce计算模型和执行原理

白话叙说mapreduce计算模型和执行原理
MapReduce是一种分布式计算模型、MR由两个阶段组成:Map和Reduce,一说到分阶段就有先有后,先执行map 在执行reduce。,map就是我们整个计算阶段的起始,reduce呢就是我们整个计算阶段的结束。从这个角度讲我们map的输入就是整个系统的输入,reduce的输出就是整个系统的输出 ,map的输出也就是reduce的输入 这个呢,就他的一前一后的顺序
2.这两个函数的形参是key、value对,表示函数的输入信息。 在我们map中有个map.entry它就是获取键值对的
一、mapreduce的计算模型

在这里插入图片描述

mapreduce的计算模型,在这个计算模型中,客户端也就是我们写的代码会提交给jobtracker,为什么提交给它呢,因为jobtracker接受用户提交的计算任务,然后呢把计算任务分配给taskTracker来执行,在taskTracker中它有的是走map任务有的是走reduce任务,在这个图中,这边是跑map,这边是跑reduce,map呢接受的是输入数据,map处理之后呢有输出,输出呢作为reduce的输入,reduce处理完了作为输出,整个计算模型中我们的输入就是map的输入我们的输出就是reduce的输出
注意:在这里呢,mapper有两个(也可以有多个)有一个reduce 在这呢map的数量 表示map任务的数量,这里的map 任务和reduce任务都是独立的java进程

那map的数量和reduce的数量有什么关系呢看Mapreduce原理图
-------->看下图
在这里插入图片描述
那map的数量和reduce的数量有什么关系呢看Mapreduce原理图
从这个图,我们可以看出左下角的是输入文件,他的数据会送给map任务去执行,在这里一共有五个map任务,这五个map任务拿的是不同的输入数据,那么这个数据啊,他就会送到reduce这边,reduce的数量是3个,reduce处理完了,会送到我们的磁盘中。
需要注意的是,map任务这5个是怎么对应到reduce的这3个呢,我们看一下,map的输出,出现了3个分支这3个虚线,这3个分支送到了不同的shuffle中,那么这5个map任务都有3个不同的分支都分散到不通的shuffle中,也就是说,一个shuffle 会接受5个map的输出,这个shuffle又把结果送到reduce任务中,换句话说,一个reduce接受的时候5个map的输出。那我们来琢磨这事map输出的分支数量与reduce任务的数量是相同的

发布了6 篇原创文章 · 获赞 0 · 访问量 210

猜你喜欢

转载自blog.csdn.net/woshimeilinda/article/details/104702728
今日推荐