大数据笔记 3--MapReduce工作流程

在这里插入图片描述

详细步骤:

1、客户端会提交相应的切片、jar包、配置文件信息到Yarn上,Yarn上的AppMater会为mapreduce申请相应的资源;

2、AppMater根据相关信息计算给mapreduce程序分配出几个MapTask资源。

3、 MapTask会利用InputFormat中的recorderReader将待处理的文本分割成<k,v>键值对的形式,然后根据用户自定义的Map方法进行逻辑计算输出到collector;

4、collector中有一个环形缓冲区(默认内存为100M),它从中一分为二,一边存储着<k,v>键值对数据,另一边存储着这些数据的索引,当环形缓冲区的存储值达到容量的80%时,会发生溢写并在另一端反向写入,这样做的好处就是可以源源不断的向其中写入数据,而不必在开辟其他空间,大大提高执行效率。

5、溢写过程中会产生分区,每个分区内的数据会进行一次快速排序,将分区内的数据按字典顺序排列。

6、每次溢写会产生一个小文件,进而生成多个小文件,在这个过程中可能会发生combiner(这是用户可选的),combiner的作用就是将key相同的键值对进行一个合并,相当于聚合操作,也等同于一个小的reducer。这样做到好处就是减少了Map端到reduce端的传输量。

7、此阶段会发生合并文件及归并排序,目的是将不同文件中相同分区内的数据按照顺序放在一个分区中,并将多个小文件合并成一个大文件,方便传输到reduce端;

8、reduce端会将所有map端属于自己分区的文件拷贝到自己的服务端;

9、拷贝过来的文件会发生一次合并然后进行归并排序,目的是将所有key相同的数据放在一起,好进行reducer()方法,此过程中还可能发生分组也是用户自定义项,用的场景不多,这里就不多做解释;

10、这里会将key相同的一组数据放入reducer()方法中进行用户自定义的聚合操作;

11、处理后的文本会由OutputFormat中的recorderWrite写入文件落入磁盘中。

到此整个MapReduce程序的运行机制就算完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigCabbageFy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值