内容简介
一、MapReduce简介
MapReduce是一种编程模型,用于大规模数据集的并行运算,它是Hadoop的三大核心组件之一,承担着Hadoop的计算工作。概念"Map(映射)“和"Reduce(聚合)”,是这个编程模型的核心思想,它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
二、MapReduce核心阶段
手绘了一张MapReduce执行简图:
MapReduce计算模型主要由三个核心阶段构成:Map、Shuffle、Reduce。Map是映射,Reduce是聚合,Shuffle是对Map的输出进行一定的排序与分割,然后再交给对应的Reduce的过程。
1. Map
- 从HDFS读入切片数据,切片的数量在作业提交时由JobSummiter类决定,切片的数量即为Map的个数,切片法则是这样的:在1和long的最大值还有用户输入的切片大小之间选择中间那个值作为切片的大小,由切片大小结合数据量划分切片的数量。事实上我们并没有设置切片大小,因而默认为HDFS块大小,