4 MapReduce 工作流程详解

MapReduce 工作流程详解

一、MapTask 的工作机制

在这里插入图片描述
总体可概括为如下流程:

1、client 向集群提交任务,指定了分片个数 n

2、集群启动 n 个 maptask

3、maptask 通过 RecordReader 读取数据(k,v),v 代表一行一行的数据

4、读到数据后 mapper 对一行一行的数据进行逻辑处理

5、把处理后的数据分装成新的 (k1, v1),通过 Context.write 发送到环形缓冲区

6、环形缓冲区把数据写入不同的分区,并且在区内针对 key 进行排序

7、当环形缓冲区达到 80% ,就把缓冲区内的数据溢出到文件,文件也是分区且区内有序

8、把之前每个分区对应的文件进行合并,新的文件也是分区且区内有序

二、ReduceTask 的工作机制

[

总体可概括为如下流程

1、根据分区号把 MapTask 最后合并好的文件按照分区抓取过来

2、对把抓取过来的文件合并在一起,并按照 key 排序

3、对排好序的数据进行逻辑运算生成新的 (k, v)

4、输出结果

注意

​ 环形缓冲区的大小会影响到 MapReduce 的执行效率,因为缓冲区越大,磁盘 io 的次数就越少,执行速度就越快。

三、Shuffle 的工作机制

在这里插入图片描述
​ 在 MapTask 中 map 方法之后,ReduceTask 方法中 reduce 之前的操作称为 shuffle,所以 shuffle 就是 MapReduce 的核心操作了。

发布了42 篇原创文章 · 获赞 3 · 访问量 2047

猜你喜欢

转载自blog.csdn.net/stable_zl/article/details/105133173