MapReduce原理简介

一、MapReduce是什么

  1. MapReduce是一种分布式计算框架 ,以一种可靠的,具有容错能力的方式并行地处理上TB级别的海量数据集。主要用于搜索领域,解决海量数据的计算问题。

  2. MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算。

二、MapReduce做什么

  1. MapReduce框架由Map和Reduce组成。

  2. Map()负责把一个大的block块进行切片并计算。

  3. Reduce() 负责把Map()切片的数据进行汇总、计算。

三、MapReduce怎么做

  1. 第一步对输入的数据进行切片,每个切片分配一个map()任务,map()对其中的数据进行计算,对每个数据用键值对的形式记录,然后输出到环形缓冲区(图中sort的位置)。

  2. map()中输出的数据在环形缓冲区内进行快排,每个环形缓冲区默认大小100M,当数据达到80M时(默认),把数据输出到磁盘上。形成很多个内部有序整体无序的小文件。

  3. 框架把磁盘中的小文件传到Reduce()中来,然后进行归并排序,最终输出。

四、要点是什么

  1. MapReduce将输入的数据进行逻辑切片,一片对应一个Map任务

  2. Map以并行的方式处理切片

  3. 框架对Map输出进行排序,然后发给Reduce,map的计算是计算向数据移动,即block在哪,就把map的jar包发到哪。

  4. Reduce从Map中拉取数据的过程称为洗牌。

  5. MapReduce的输入输出数据处于同一个文件系统(HDFS)

  6. 框架负责任务调度、任务监控、失败任务的重新执行

  7. 框架会对键和值进行序列化,因此键和值需要实现writable接口,框架会对键排序,因此必须实现writableComparable接口。

五、MapReduce原语

MapReduce原语:“相同”key的键值对为一组调用一次Reduce方法,方法内迭代这组数据进行计算。

猜你喜欢

转载自blog.csdn.net/weixin_43462670/article/details/89224775