MapReduce - 全面讲解

一、什么是MapReduce?

二、MapReduce的流程

在这里插入图片描述具体流程:

Map阶段:

1、利用客户端指定的InputFormat来读取数据
2、利用客户端编写的RecordReader,通过reader()方法,去读取文件,一次读一行,一行就是一份文件片
3、生成一个个键值对(K,V),K是行偏移量,V是内容
4、获取键值对,通过Mapper的Map()方法,逻辑处理生成一个个新的键值对map(k,v) : k是单词,v是个数。然后通过context.write()将(k,v)写入到OutputCollector收集器中。

Shuffle阶段:

: combiner是优化)

1、将收集器里的数据放入环形缓冲区(默认100M),当环形缓冲区的数据量达到80%时,会溢出。(溢出前: 需要对环形缓冲区的键hash出一个partition值,然后根据partition分区,在相同的分区内根据进行排序。) 如果 设置了Combiner ,那么就会将同一key的键值合并在一起,此时的文件就是有分区且分区内有序的文件,这样可以减少网络传输。如果没有 设置Combiner, 环形缓冲区开始溢出到Map Task磁盘,此时是有分区且分区内有序的文件。如果数据量过大,会溢出多个文件。文件会被merge归并排序成有分区分区内有序文件,此时map task结束
2、

三、MapReduce优缺点

优点

缺点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值