MR分布式计算理论

本文详细阐述了MapReduce的设计理念,即移动计算而非数据的原则,以及Map和Reduce两个核心阶段的工作流程。深入解读了Shuffle过程,包括内存缓冲区、临时文件的生成与合并;Partition过程,基于key hash分配reduce任务;Combiner过程,用于局部合并数据,提高Reduce阶段的效率。

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

  • MapReduce设计理念:

        移动计算,而不是移动数据

        两个阶段,Map / Reduce

  • Map和Reduce之间的Shuffle、Partition、Combiner过程的理解

        Shuffle过程:每个map task都有一个内存缓冲区,存储着map的输出结果,默认100MB(也可以通过设置配置文件中的参数mapreduce.task.io.sort.mb来设置),当缓冲区快满的时候,会将缓冲区的数据以一个临时文件的方式存放到磁盘中(整个过程是独立的线程执行,默认达到缓冲区容量80%的时候会启动该线程),当整个map task结束后再对磁盘中的找个map task产生的所有临时文件进行合并,生成最终的正式输出文件,等待reduce task来拉数据。

        Partition理解:根据key或者 value及reduce的数量来决定当前的输出结果该有那个reduce task处理,默认对key hash后再模以reduce task的数量,默认的方式只是为了平均reduce的处理能力,Partition过程可以定制。

        Combiner理解:每个reduce端合并数据时,有些数据可能像这样:“aaa”/1, “aaa”/1。对于WordCount例子,就是简单地统计单词出现的次数,如果在同一个map task的结果中有很多个像“aaa”一样出现多次的key,我们就应该把它们的值合并到一块,这个过程叫reduce也叫combine。但MapReduce的术语中,reduce只指reduce端执行从多个map task取数据做计算的过程。除reduce外,非正式地合并数据只能算做combine了。其实大家知道的,MapReduce中将Combiner等同于Reducer。Combiner的输出是Reducer的输入,Combiner绝不能改变最终的计算结果。

 

 

参考博客:https://www.cnblogs.com/ljy2013/articles/4435657.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值