MapReduce(1)

整体流程

MapReduce是由一组数据每条记录通过Map方法映射成为一组KV数据,相同key为一组执行reduce方法,方法内迭代执行数据。

在这里插入图片描述

由图所示,数据输入来源于HDFS的块,由HDFS块读取同样大小的切片数据,切片数据通过格式化format成一条条record记录,record作为map方法入参执行map方法生成kv键值对数据(1条、多条、或者无输出)。

在所有的record执行完map后,将所有的kv键值对,根据不同的key分组copy到不同的reduce机器上,将不同的map机器数据合并完后,同一key的数据执行reduce方法,输出最终数据。

并行度

Map的并行度由split的数量决定(默认是1:1关系),Reduce的并行度由人为决定(默认1)

映射关系

block:split 可能为1:1、1:n、n:1

split:map为1:1

map:reduce可能为1:1、1:n、n:1、n:n,但是同一组数据不同打散到不同reduce,不然数据不准

group(key):partition可能为1:1、1:n、n:1、n:n同一组数据只能写入一个分区

任务流程

在这里插入图片描述

MapReduce任务流程

一次Map Reduce的流程如上图所示。在map阶段,输入切片通过指定的格式化方法生成记录,记录通过map方法映射生成kv键值对,通过kv键值对计算分区p,将kvp值写入内存缓冲区。在缓冲区溢出写磁盘时同时做两次排序,一次根据分区P进行排序,一次根据k进行排序,将排序后的数据写入磁盘。

在reduce阶段,对来自不同map机器的数据进行归并排序,归并到最后两个文件时,reduce和归并排序可以同时进行。

对节省IO做的优化:

1、数据先写入缓冲区

2、在缓冲区做两次排序后在写入磁盘,缓冲区速度是磁盘的N倍。保证分区P的排序后可以实现多台reduce机器fetch文件时只需要打开文件直接读取属于自己分区P的数据,无须从头到尾扫描。同理保证K的顺序,可以在reduce时,对一组数据(相同key)调用方法,可以打开文件顺序读取key相同的数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值