大数据学习笔记13:MapReduce处理流程一

本文深入解析MapReduce的数据处理流程,包括单机与分布式环境下的数据读取、处理及写入过程。介绍了数据切分、多进程map处理、shuffle与sort阶段、reduce汇总等关键步骤,并详细说明了map阶段的内存缓冲区机制及其对后续处理的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MapReduce处理流程一

 

 

我试图着搞明白MapReduce的处理流程--或者叫运行流程。

 

1、先从单机的角度 粗粒度的看


 

数据处理程序 读入数据,进而进行数据处理,处理完成后写数据。

整体上看很简单,就三步:从源头读入数据、处理数据、写数据到目的地。

 

 

2、更细化的图

 

 

从1中的图我们大体能明白总体的流程,这是最简单模型。实际运行中并不是单机运行的,而是在分布式的多台机器上并行执行的。

     2.1 多个机器并行执行:  问题就来了,分布式环境下多个机器如何访问共享文件。当然我们已经知道

                                              Hadoop下是使用 HDFS处理的。所以我们看到 2 中的图的左边画出了 HDFS

                                              的一个框。多个机器读取的源数据都是存在于 HDFS上的。

 

      2.2 并行执行之切分 :并行执行 肯定要切分任务--- 把源数据切分为多个小块--也就是图中画的 data split

                                          这个切分是由 InputFormat完成的。

 

      2.3 并行执行的多个map: 这里的多个map处理--是多个进程。

                                                 Hadoop采用都是多进程模型。spark采用的是多线程模型。

                                                 多进程更容易控制资源占用,而多线程不太容易控制资源占用。

 

      2.4 shuffle & sort  : 多map产生的多个 中间结果进行进一步的处理。shuffle 意思为 洗牌---很形象。

 

      2.5 进行reduce处理:对map的结果进行汇总操作。根据key 使用哈希算法 ,把不同的key的数据发送给

                                         不同的reduce进行处理。

 

      2.6 上面图中的一个问题: 应当是一个 split 对应一个  map 的。

 

 

 

3、显示更多细节

 

 
                3.1 每个map处理时 都有自己的 内存缓冲区,默认大小是100M ,就是上图画的buffer in memory

                       部分。buffer--缓冲,缓冲一般是临时存储的,快要满时是要写到磁盘上的。占用的80%时会把

                       这占用的80%的数据写入磁盘。

                 

                3.2   map一直运行 就会一直往 buffer写放数据,buffer就会写到磁盘多个小文件。就是上面buffer

                         后面 画出来的 一摞三个框的 东西。我们看 每个框好像还有自己的结构。一个框中被竖线分

                         割成了多个 “区”。这里的区就是partition。相对于数钱的例子的话,这里的 一个partition就一

                         一沓相同面值的钱--10块的一沓 50 的一沓  100 的一沓,这三沓摞一块就是图中的一个小文

                         件。  为什么他们会整齐的分沓摞起来呢?--- 原来 buffer在向磁盘写文件时 并不是简单的原

                         样的把内容的中数据写入磁盘文件,而是写的时候有一个排序的过程。正式这个排序的处理

                          才是10块的汇聚到一沓里。

 

                 3.3  产生的多个 小文件并不会直接发送给 reduce处理,而是要再合并处理。同样这次合并也不是

                         原样的append。而是有一个归并排序的处理。把 各个一小沓10块的  汇聚成一大沓。

                         然后合并后产生的文件就是一个大的有序的文件。

                 

                  3.4  多个map最终会产生多个merge后的文件。然后从 这多个merge后的文件中 取出相同 一沓10

                         块的发送( 实际上就是copy到reduce节点机器上)给 处理10块的钱的 reduce。

 

                

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值