YARN的基础功能有: 资源的管理, 作业的调度、监控等.
ResourceManager和NodeManager形成了Hadoop的数据计算框架.
ResourceManager: 负责系统资源在应用间的分配. ResourceManager有两个主要的组件: Scheduler和ApplicationsManager. Scheduler只纯碎地负责给运行的应用分配资源, 不会执行失败任务的重启. Scheduler是根据应用的需求来执行调度的, 基于一个抽象的资源容器(resource Container), 这个容器包含的元素有: 内存, CPU, disk, network等.
The Scheduler has a pluggable policy which is responsible for partitioning the cluster resources among the various queues, applications etc. The current schedulers such as the CapacityScheduler and the FairScheduler would be some examples of plug-ins.
ApplicationsManager 主要负责接受作业的提交; 为要执行的应用(提交的作业应用)指定一个特定的容器(ApplicationMaster); 任务执行失败时负责重启ApplicationMaster container.
ApplicationMaster: 每一个客户应用(自己的应用程序)都会对应一个ApplicationMaster. 负责从ResourceManager获取资源, 并负责和NodeManager一起去完成任务的执行, 任务进度的监控和任务状态的跟踪.
NodeManager: 每个机器节点都会有一个NodeManager进程, 来负责收集监控各个节点的cpu, 内存, 磁盘, 网络等资源的使用情况, 并会把这些信息上报给ResourceManager/Scheduler.