MapReduce是一种并行编程模型,用于大规模数据集(大于1TB)的并行运算。它将复杂的、运行于大规模集群上的并行计算过程高度抽象为两个函数:**Map**和**Reduce**。 在Map阶段,输入数据被拆分成不同的数据块,这些数据块被分发到各个Map任务上。每个Map任务对输入的数据块进行处理并输出成一组键值对。具体的处理方式取决于编写Map任务的方式,由程序员决定。 而在Reduce阶段,系统会根据Map阶段输出的键值对进行排序和分区,这个过程是系统自动完成的,不需要程序员编写代码。一组键值对会送到同一个Reduce任务上,Reduce任务会对这些键值对按照键来进行合并,并对每个键的所有值进行处理,输出处理结果。具体的处理方式也是由程序员编写的Reduce任务来决定。 通过这种分而治之的方式,MapReduce能够将大规模的数据计算工作分解成小规模的计算任务,这些小规模的计算任务可以在不同的计算节点上并行处理,从而极大地提高了数据处理效率。 因此,MapReduce模型中的两个关键函数分别是**Map**和**Reduce**。