乐趣区

关于hadoop:Hadoop之Yarn

1.Yarn 概述

YARN 是 Hadoop2.x 版本中的一个新个性。
在 1.x 版本中,MapReduce 版本承当了过重的工作,包含资源调度,而到 2.x 版本中,则将资源调度这部分独立进去了,就是 Yarn,这使得 hadoop 更加巩固,领有更好的扩展性,可用性,可靠性。

所以咱们能够晓得,Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台。

2.Yarn 架构

YARN 次要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件形成。

2.1ResourceManager

ResourceManager 领有零碎所有资源分配的决定权,负责协调和治理整个集群(所有 NodeManager)的资源,响应用户提交的不同类型应用程序的解析、调度、监控等工作。
ResourceManager 会为每一个 Application 启动一个 MRAppMaster,并且 MRAppMaster 扩散在各个 NodeManager 节点。

ResourceManager(RM)次要作用:
1) 解决客户端申请;
2) 监控 NodeManager
3) 启动或监控 ApplicationMaster
4) 调配与调度资源

2.2NodeManager

NodeManager 是 YARN 集群当中资源的提供者,监控应用程序的资源应用状况,通过心跳向集群资源调度器 ResourceManager 汇报本人的额状态。
NodeManager 监督 Container 的生命周期,每个 Container 的资源应用(内存、CPU 等)状况,追踪节点健康状况等。
次要作用:
1)治理节点上的资源
2)接管解决 ResourceManager 的命令
3)执行来自 ApplicationMaster 的命令

2.3Container

Container 容器是一个形象进去的逻辑资源单位,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
Container 和集群节点的关系是:一个节点会运行多个 Container,但一个 Container 不会跨节点。
每一个应用程序从 ApplicationMaster 开始,它自身就是一个 container(第 0 个),一旦启动,ApplicationMaster 就会增加工作需要,与 Resourcemanager 协商更多的 container,并且能够动静开释和再申请 container。

2.4ApplicationMaster

ApplicationMaster 负责与 scheduler 协商适合的 container,跟踪应用程序的状态,以及监控它们的进度,ApplicationMaster 是协调集群中应用程序执行的过程。每个应用程序都有本人的 ApplicationMaster,负责与 ResourceManager 协商资源(container)和 NodeManager 协同工作来执行和监控工作。

Yarn 工作流程

大抵流程如下
1)MR 程序提交工作, 也就是执行这一步

main{job.waitForCompletion()
 }

2)YarnRunner 向 ResourceManage(RM)r 申请一个 Application,RM 将该应用程序的资源门路返回给 YarnRunner。
3)程序拿到资源门路,将运行所需资源提交到 hdfs 上。
4)程序提交资源完后请运行 MrAppMaster。
5)RM 将用户的申请封装成一个 Task,放到队列中。
6)当 NodeManager 获取到 Task 工作,开始创立容器 Container,并生成 MrAppmaster。
7)Container 从 HDFS 上拷贝资源到本地,MrAppmaster 向 RM 申请运行指定 MapTask 资源。
8)RM 将运行 MapTask 任务分配到其余 NodeManager,NodeManager 别离支付工作并创立容器。
9)MR 向接管到工作的 NodeManager 发送程序启动脚本,NodeManager 别离启动 MapTask。
10) MapTask 对数据分区排序, 所有 MapTask 运行结束后,MrAppMaster 向 RM 申请资源,运行 ReduceTask。
11) ReduceTask 从 MapTask 获取相应分区的数据。
12)执行结束,MR 申请登记。

退出移动版