MRv1与MRv2

写在前面

虽然接触hadoop这么长时间了,但很少有写过一些技术性总结的文档,现在起开个好头,复习、加深一下对MRv1与MRv2的理解。

MRv1

即MapReduce Version 1.0,该计算框架主要由三部分组成,分别是

  • 编程模型
  • 数据处理引擎
  • 运行时环境
  1. 编程模型将问题抽象成map和reduce,其中map阶段将输入数据解析为k/v,迭代调用map()函数处理后,再以k/v的形式输出到本地目录,reduce阶段则将key相同的value进行规约处理,最终将结果写在hdfs上;
  2. 数据处理引擎由MapTask和ReduceTask组成,分别负责Map阶段逻辑和Reduce阶段逻辑;
  3. 运行时环境由(一个)JobTracker和(若干个)TaskTracker两类服务组成,其中JobTracker负责资源管理负责所有的作业控制,而TaskTracker负责接收来自JobTracker的命令并执行它。

MRv2

即MapReduce Version 2.0,该计算框架与MRv1具有相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2是在MRv1基础上经过加工,运行于资源管理框架Yarn上的MapReduce计算框架。它的运行时环境是通用的资源管理框架Yarn和作业控制进程ApplicationMaster,其中Yarn负责资源管理与调度,而ApplicationMaster仅负责一个作业的管理。

小结

MRv1是一个独立的离线计算框架,而MRv2是一个运行在Yarn之上的MapReduce框架。

细说区别

MRv1的运行时环境主要由JobTracker和TaskTracker组成,其中JobTracker负责资源和任务的管理和调度,TaskTracker负责单个节点的资源管理和任务调度。这样使得MRv1把资源管理和应用程序管理混杂在了一起,在扩展性、容错性和多框架支持方面存在缺陷。而MRv2则通过将资源管理和应用程序管理两部分剥离开来,分别由Yarn和ApplicationMaster负责,Yarn专管资源管理和调度,而Application则负责与具体应用程序相关的任务切分、任务调度和容错等等。

小鹏 wechat
公众号:数据Man
0%