mapreduce实现原理

MapReduce是一种分布式计算模型,由Google提出,用于处理海量数据。它主要包括Map和Reduce两个阶段。Map阶段包括读取数据、解析键值对、处理、分区和排序;Reduce阶段涉及Copy(从Map端获取数据)、Merge(数据合并、排序)和Reduce任务执行。Combiner减少数据传输,Partitioner确保相同Key的数据发送到同一Reduce。

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

1.MapReduce简介

  一   MapReduce是一种分布式计算模型.是由Google提出的,主要是解决海量数据的计算。

 二  MapReduce主要分为两个阶段:Map和Reduce,用户只需实现map()和reduce()即可实现分布式计算.

2.MapReduce实现流程


3.MapReduce原理


解析:

1.阶段是Map阶段:

  1.1 读取HDFS中的文本.将每一行都解析成一个个<k,v>.每个键值对抵用一次map()函数。

  1.2 接收1.1产生的<k,v>进行处理,产生新的<k,v>

  1.3 对1.2中的<k,v>进行分区

  1.4对不同的分区的数据进行分组,排序.分组:相同key的数据value放在一个集合中

  1.5 对分组后的数据进行归约 combiner

2.Reduce阶段:

2.1 Copy阶段:Reduce通过HTTP的方式得到处文件的分区

       reduce端可能有从n个map的结果中获取数据,从而这些map的执行速度不相同,当其中的一个map执行结束时,reduce就会向JobTracker中获取信息.TaskTracker就会得到消息,进而将消息汇报给jobTracker

reduce会定时从jobTracker获取信息,reduce端默认有5个复制线程从map端复制数据。

2.2 Merge阶段:

从map端复制来的数据写入reduce端的缓存中,同样缓存占到一定的阀值后会将数据写到磁盘中。同样会进行partition.combiner.sort等过程。如果形成的有多个磁盘文件则进行合并,最后一次合并的结果作为reduce端的输出。

2.3 Reduce的参数:

将2.2的合并的结果输入到reduceTask任务中

MapReduce的原理:

    

    combiner节点处理的是将同的一个map的相同的键值进行合并.避免重复传输,从而减少了I/O开销.

   partitioner节点负责将map的产生的结果进行划分,确保相同的key分发到同一个reduce中.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值