Hadoop——MapReduce过程

本文深入解析MapReduce的工作流程,从Mapper的reader、mapper、collect、spill、combiner步骤,到Reducer的shuffling和reduce过程,阐述了数据处理的核心机制。

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

MapReduce由Mapper和Reucer组成,Mapper负责处理每行数据,Reducer处理相同Key的一组数据。

 

MapReduce运行是由Driver中的job通过submit()进行作业提交,submit()包含与集群建立连接和提交作业的过程,在提交作业时会进行切片,默认的切片方法是使用的TextInputFormat,它进行切片时根据文件的大小进行切割,默认切割规则是否达到一个指定值的1.1倍,使用TextInputFormat读取多个文件时,不同文件不会进行合并处理,会从头开始进行切片。切片之后会把切片配置信息写到一个文件夹下,然后集群去执行这些切片配置,执行时会用到mapper和reducer

 

一、Mapper的运行过程大概包括以下几步,reader、mapper、collect、spill、combiner

reader

每个切片一般对应一个mapper,reader会根据切片配置信息去读取相应路径下的数据,

mapper

然后调用用户写的mapper方法对数据进行相应的处理,

collect

数据处理完之后调用OutputCollector.collect()输出结果,在函数内部会调用key/value分区(调用Driver中job指定的分区方法,默认为HashPartition分区),并将数据写入一个环形缓冲区。

spill

当环形缓冲区达到一定条件时,会把数据写到本地磁盘,在写入磁盘之前会进行一个排序、合并、压缩等操作。

在进行排序时,会先按照分区编号就行排序,然后每个分区内在按照key的compareTo进行排序,如果用户设置了combine,在写入直接回调用combiner方法进行聚集操作。map

combiner

当所有的数据处理完之后,MapTask会把所有的文件进行一次合并,确保最终只有一个数据文件生成,同时生成相应的索引文件。

 

二、Reducer过程

reducetask根据自己的分区号,去 各个maptask机器上取相应的分区的数据

reducetask将来自各个maptask的文件进行合并(归并排序),大文件合并之后,shuffle阶段就结束了。

reducetask根据Driver中setCombinerGroupingComparatorClass()中的compare方法来判断哪些是属于同一分组,用户调用编写的reduce()方法处理group。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值