MapReduce1.0 VS Yarn

来源:互联网 发布:mac怎么添加书签 编辑:程序博客网 时间:2024/05/03 06:53

简答来说,经典的MapReduce中主要有两个角色JobTracker和TaskTracker,
JobTracker负责作业调度和任务进度监督,追踪任务,任务登记等。
TaskTracker运行作业划分后的任务,且对map任务和reduce任务,都有固定数量的任务槽。

下面是MapReduce的数据流和控制流图示:
这里写图片描述

yarn将JobTracker中两种角色分为两个独立的守护进程:
管理集群上资源使用的资源管理器(Resource Manager)
管理上任务运行生命周期的应用管理器(Application Master)
yarn中不区分map slot和reduce slot,使用资源池。

下面是yarn框架的简单图示:

yarn框架的简单描述

YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)安排给基础NodeManager(YARN的每节点代理)。ResourceManager 还与 ApplicationMaster一起分配资源,NodeManager一起启动和监视它们的基础应用程序。ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。

ApplicationMaster 管理一个在 YARN 内运行的应用程序的每个实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager监视容器的执行和资源使用(CPU、内存等的资源分配)。

NodeManager 管理一个 YARN 集群中的每个节点。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。 负责启动application启动所需的container。NodeManager和ResourceManager共同组成整个数据计算框架。

下面是yarn运行的简单图示:
这里写图片描述

要使用一个 YARN 集群,首先需要来自包含一个应用程序的客户的请求。ResourceManager协商一个容器的必要资源,启动一个 ApplicationMaster来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster 协商每个节点上供应用程序使用的资源容器。执行应用程序时,ApplicationMaster监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行周期就完成了。

参考:《Hadoop权威指南》《Hadoop实战》

0 0