MapReduce 1.0 或 MRv1

MapReduce 1.0 计算框架主要由三部分组成,分别是编程模型、数据处理引擎和运行 时环境。它的基本编程模型是将问题抽象成 Map 和 Reduce 两个阶段,其中 Map 阶段将输 入数据解析成 key/value,迭代调用 map() 函数处理后,再以 key/value 的形式输出到本地 目录,而 Reduce 阶段则将 key 相同的 value 进行规约处理,并将最终结果写到 HDFS 上 ; 它的数据处理引擎由 MapTask 和 ReduceTask 组成,分别负责 Map 阶段逻辑和 Reduce 阶段逻辑的处理 ;它的运行时环境由(一个)JobTracker 和(若干个)TaskTracker 两类服务 组成,其中,JobTracker 负责资源管理和所有作业的控制,而 TaskTracker 负责接收来自 JobTracker 的命令并执行它。该框架在扩展性、容错性和多框架支持等方面存在不足,这也 促使了 MRv2 的产生。

MRv2

MRv2 具有与 MRv1 相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2 是在 MRv1 基础上经加工之后,运行于资源管理框架 YARN 之上的计算框架 MapReduce。 它的运行时环境不再由 JobTracker 和 TaskTracker 等服务组成,而是变为通用资源管理 系统 YARN 和作业控制进程 ApplicationMaster,其中,YARN 负责资源管理和调度,而 ApplicationMaster 仅负责一个作业的管理。

简言之,MRv1 仅是一个独立的离线计算框架, 而 MRv2 则是运行于 YARN 之上的 MapReduce