1、基本架构
(1)组成:YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成
(2)ResourceManager作用
1)处理客户端请求
2)监控NodeManager
3)启动或监控ApplicationMaster
4)资源的分配与调度
(3)NodeManager作用
1)管理单个节点上的资源
2)处理来自ResourceManager的命令
3)处理来自ApplicationMaster的命令
(4)ApplicationMaster 作用
1)负责数据的切分
2)为应用程序申请资源并分配给内部的任务
3)任务的监控与容错
(5)Container :Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
2、工作机制
(1)Mr 程序提交到客户端所在的节点(生成job.split、job.xml...等任务规划配置文件)。
(2)Yarnrunner 根据job运行所需资源向Resourcemanager 申请Application,RM将该应用程序的资源路径返回给 yarnrunner,将运行所需资源提交到 HDFS 上之后申请开启App。
(3)RM 将用户的请求初始化成一个 task,其中一个 NodeManager 领取到 task 任务, 创建容器 Container,并产生 Appmaster。
(4)Container 从 HDFS 上拷贝任务规划配置文件以及资源到本地,Appmaster 向 RM 申请运行 maptask 资源,RM 将运行 maptask 任务分配给另外两个 NodeManager,另两个 NodeManager 分别领取任务并创建容器。
(5)AppMaster 向两个接收到任务的 NodeManager 发送程序启动脚本,这两个 NodeManager分别启动 maptask 对数据分区排序。
(6)AppMaster 等待所有 maptask 运行完毕后,向 RM 申请容器,运行 reduce task。
(7)reduce task 向 maptask 获取相应分区的数据。程序运行完毕后,AppMaster 会向 RM 申请注销自己。