搞定MapReduce编程模型

本文详细介绍了MapReduce的编程模型,包括Map和Reduce两个阶段。Map阶段通过map()函数将输入数据拆分为键值对,Reduce阶段通过reduce()函数对Map的输出进行汇总。文中还详细阐述了MapReduce的shuffle过程,包括partition、sort、spill、combiner等步骤,以及Reduce执行流程,强调了数据分区、排序和合并的重要性。此外,通过单词统计案例说明了MapReduce的工作原理。
摘要由CSDN通过智能技术生成

1. MapReduce编程模型

  • MapReduce是采用一种分而治之的思想设计出来的分布式计算框架

  • 一些复杂或计算量大的任务,单台服务器无法胜任时,可将此大任务切分成一个个小的任务,小任务分别在不同的服务器上并行的执行;最终再汇总每个小任务的结果

  • MapReduce由两个阶段组 成:Map阶段(切分成一个个小的任务)、Reduce阶段(汇总小任务的结果)。

1.1 Map阶段

  • map()函数的输入是kv键值对,输出是一系列kv键值对,输出结果写入本地磁盘

1.2 Reduce阶段

  • reduce()函数的输入是kv键值对(即map的输出kv键值对);输出也是一系列kv键值对,最终写入HDFS

2. MapReduce编程案例

2.1 MapReduce原理图

以单词统计为例:

  • block对应一个split分片,一个split对应一个map task

  • reduce task的个数由程序中编程指定

上图有3个Mapsplit数量=map数量)和3个Reduce加起来就有6个独立的进程空间,当这个MapReduce作业跑起来的时候,需要占用6个进程空间,这些进程(或则说算子)中有可能在同一个节点运行,也有可能都在不同节点上上运行的。

MapReduce计算框架-map执行流程:

MapReduce的数据源是来自HDFS上面的,数据源都是以File的方式表示

通过一个inputFormat类 (这两个功能其实是在inputFormat中封装好的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值