第一部分、MapReduce是什么
狭义的讲MapReduce最早是由Google提出的一种运行在成百上千台计算机上的分布式计算框架,Google运用该框架对大规模数据集的并行批处理问题。当然在Hadoop中,分布式文件系统很大程度上为MapReduce进行了优化,从这个角度说HDFS也可以看作是MapReduce计算中的一部分。下图反映了MapReduce在Hadoop生态系统中的基础地位,从图中可以看到 MapReduce在生态系统中处于底层,与HDFS紧密关联, Hive、Pig、Mahout等诸多应用都直接依赖于MapReduce来完成。
MapReduce中包含了两个主要概念Map(映射)与Reduce(化简)来自于函数式编程语言的思想。通常在框架下实现特定应用需要指定一个Map函数,该函数把输入映射成为一组键值对,同时需要指定一个Reduce函数,该函数把所有Map函数产生的键值对按照键相同分组分别处理每组值生成输出。从Map与Reduce的概念不难看出,当输入可以拆分为独立的单条记录时,利用分治法的思想就可以把输入分割,并将处理每个子集的M