一、服务组件
1、ResourceManage
全局的资源管理器,整个集群只有一个,负责集群资源的统一管理和调度分配。
- 功能
- - a) 处理客户端请求。
- b) 启动/监控ApplicationMaster。
- c) 监控NodeManager。
- d) 资源分配与调度。
2、NodeManager
整个集群有多个,负责单节点资源管理和使用。
功能 :单个节点上的资源管理和任务管理。 处理来自ResourceManager的命令。
处理来自ApplicationMaster的命令。
NodeManager管理抽象容器(container),这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态。
3、Application Master
管理一个在YARN 内运行的应用程序的每个实例。
功能 :
1 数据切分。
2)为应用程序申请资源,并进一步分配给内部任务。
3) 任务监控与容错。
负责协调来自ResourceManager的资源,幵通过NodeManager监视容器的执行和资源使用(CPU、内存等的资源分配)。
4、Container
YARN中的资源抽象,封装某个节点上多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM向AM返回的资源便是用Container表示的。
YARN 会为每个任务分配一个Container,且该任务只能使用该Container中描述的资源。
功能:
对任务运行环境的抽象。
描述一系列信息。 任务运行资源(节点、内存、CPU)。
任务启动命令。 任务运行环境。
二、YARN的工作流程
当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序。
第一个阶段是启动ApplicationMaster;
第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成;
在整个工作流程当中,ResourceManager和NodeManager都是通过心跳保持联系的,
NodeManager会通过心跳信息向ResourceManager汇报自己所在节点的资源使用情况。