MapReduce在hadoop-0.23中已经经历了一次全然彻底地大修。就是如今我们叫的MapReduce 2.0 (MRv2) or YARN.

MRv2的基本思想是把JobTracker分成两个基本的功能,资源管理和工作调度/监控。变成独立的进程。有一个全局的ResourceManager (RM)和每一个应用的ApplicationMaster (AM)。一个应用要么是一个典型的Map-Reduce工作,要么是工作的DAG。

ResourceManager 和 每一个从节点, NodeManager
(NM),构成数据计算框架。

在系统中的全部应用中。ResourceManager 有权分配资源。

每一个应用 ApplicationMaster 实际上是一个指定库和协调ResourceManager和NodeManager(s)去运行和监控任务的框架。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFvemhhb2t1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

ResourceManager 有两个基本的组件:Scheduler 和 ApplicationsManager.

Scheduler 负责分配限定的空间、队列资源给执行中的应用。Scheduler 是一个纯调度器。不去监控或跟踪应用的全部状态。

还有,对于失败任务或硬件失败。它不保证重新启动。 Scheduler 基于应用的资源要求执行它的功能;它这样做是基于包括了如内存。cpu,硬盘,网络等的资源Container,。在第一版中。仅仅支持内存。

Scheduler 有一个可插入式的插件策略,负责在集群资源中切割各类队列,应用等。当前的Map-Reduce调度器如 CapacityScheduler 和 FairScheduler 就是这样的插件的样例。

CapacityScheduler 支持层级队列 同意更可靠的集群资源共享。

ApplicationsManager 负责接受工作提交,协调第一容器来运行指定的ApplicationMaster 应用,而且ApplicationManager容器失败时提供重新启动的服务。

NodeManager 是每台机器框架client。负责管理容器的资源使用(cpu,内存,硬盘。网络)。并报告给 ResourceManager/Scheduler.

每一个应用 ApplicationMaster 负责从Scheduler 协调合适的资源容器,监控他们的状态并管理流程。

MRV2 维护与之前的版本号 (hadoop-0.20.205)间的 API
兼容性 . 这意味着全部的 Map-Reduce jobs 一次编译后就能够在MRv2上运行。


05-27 19:34