欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Hadoop 的架构理解和相关扩展 - II,MapReduce

最编程 2024-04-21 12:41:21
...

1.MapReduce是什么

  • 分布式计算。假设有300M统计文件中的单词出现次数,正常程序就可以;但是有T级别的统计文件则不能这样处理,所以使用分布式计算方式。
  • 我们要数图书馆的书,你数1号书架,我数2号书架。这就是"Map"。我们人越多,数书就越快。
    现在我们到一起,把所有人的统计数加在一起。这就是"Reduce"。

2.MapReduce编程模型

1.简单理解

在这里插入图片描述

  1. 图中,Input的每行数据在生产当中对应一个文件
  2. shuffle是将map中相同规则的数据放在一起
  3. reduce整合数据

2.两个节点进行分布式计算的过程

在这里插入图片描述

  1. InputFormat读取数据
  2. Split数据切片
  3. 通过RR[RecordReader]将数据读取进来
  4. 读进来的数据交给Mapper处理,输出临时结果
  5. 临时结果交给Partioner进行Shuffle
  6. Reduce处理
  7. 通过OutputFormat结果输出

3.设计构思

在这里插入图片描述

3.MapReduce代码过程

MapReduce的开发一共有八个步骤,其中Map阶段分为2个步骤,Shuffle4个,Reduce2个。

  • ===== Map阶段
  1. 设置InputFormat类,将数据切分为Key-Value(K1和V1)对,输入到第二步
  2. 自定义Map逻辑,将第一步的结果转换成另外的Key-Value(K2和V2)对输出结果
  • ===== Shuffle阶段
  1. 对输出的K-V对进行分区
  2. 对不同分区的数据按照相同的Key排序
  3. (可选)对分组过的数据初步规约,降低数据的网络拷贝
  4. 对数据进行分组,相同Key的Value放入一个集合中
  • ===== Reduce阶段
  1. 对多个Map任务的结果进行排序以及合并,编写Reduce函数实现自己的逻辑,对输入的K-V进行处理,转为新的K-V输出
  2. 设置OutputFormat处理并保存Reduce输出的K-V数据

推荐阅读