YARN主要架构
ResourceManager
集群资源的协调者和管理者,负责给用户提交的所有程序分配资源。
NodeManager
集群具体资源的管理者,负责节点内所有容器的生命周期的管理,资源监控。
具体:
-
启动时向
ResourceManager注册并定时发送心跳消息,等待ResourceManager的指令; -
维护
Container的生命周期,监控Container的资源使用情况; -
管理任务运行时的相关依赖,根据
ApplicationMaster的需要,在启动Container之前将需要的程序及其依赖拷贝到本地。
ApplicationMaster
负责协调来自ResourceManager的资源,并通过 NodeManager 监视容器内资源的使用情况,同时还负责任务的监控与容错。
具体:
-
根据应用的运行状态来决定动态计算资源需求;
-
向
ResourceManager申请资源,监控申请的资源的使用情况; -
跟踪任务状态和进度,报告资源的使用情况和应用的进度信息;
-
负责任务的容错。
Container
YARN资源的抽象,YARN 会为每个任务分配一个 Container,该任务只能使用该 Container 中描述的资源。ApplicationMaster 可在 Container 内运行任何类型的任务。
YARN工作原理图
说明:一下内容引入:BigData-Notes
-
Client提交作业到 YARN 上; -
Resource Manager选择一个Node Manager,启动一个Container并运行Application Master实例; -
Application Master根据实际需要向Resource Manager请求更多的Container资源(如果作业很小, 应用管理器会选择在其自己的 JVM 中运行任务); -
Application Master通过获取到的Container资源执行分布式计算。