3.2 MapReduce计算模型

要了解MapReduce,首先需要了解MapReduce的载体是什么。在Hadoop中,用于执行MapReduce任务的机器有两个角色:一个是JobTracker,另一个是TaskTracker。JobTracker是用于管理和调度工作的,TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker。

3.2.1 MapReduce Job

在Hadoop中,每个MapReduce任务都被初始化为一个Job。每个Job又可以分为两个阶段:Map阶段和Reduce阶段。这两个阶段分别用两个函数来表示,即Map函数和Reduce函数。Map函数接收一个<key, value>形式的输入,然后产生同样为<key, value>形式的中间输出,Hadoop会负责将所有具有相同中间key值的value集合到一起传递给Reduce函数,Reduce函数接收一个如<key,(list of values)>形式的输入,然后对这个value集合进行处理并输出结果,Reduce的输出也是<key, value>形式的。

为了方便理解,分别将三个<key, value>对标记为<k1,v1>、<k2,v2>、<k3,v3>,那么上面所述的过程就可以用图3-1来表示了。

3.2 MapReduce计算模型 - 图1

图 3-1 MapReduce程序数据变化的基本模型