Hadoop核心由HDFS和MapReduce组成,HDFS负责分布式存储,MapReduce负责分布式计算。
MapReduce最早是由Google研究提出的一种面向大规模数据处理的并行计算模型和方法,其初衷主要是为了解决搜索引擎中大规模网页数据的并行化处理。由于MapReduce可以普遍应用于很多大规模数据的计算问题,Google进一步将其广泛应用于很多大规模数据处理问题。到目前为止,Google有上万个各种不同的算法问题和程序都使用MapReduce进行处理。在Google的论文中最初的关于MR的描述和编程模型如图所示。
在Hadoop生态中,MapReduce是构建在分布式文件系统之上,对存储在分布式文件系统中的数据进行分布式计算。正如其名称一样,MR的计算过程分为Map阶段和Reduce阶段,在中文中经常将其翻译为映射和规约。MR的架构在V1.x和V2.x差别较大,但基本都有Client、JobTracker、TaskTracker等主要组件,典型架构如图所示。
(1)Client
用户编写的MapReduce程序通过Client提交到JobTracker端;同时,用户可通过Client提供的一些接口查看作业运行状态。在Hadoop内部用