基础架构、工作机制、作业提交全过程
相关博客:https://blog.csdn.net/wlh2220133699/article/details/133917326
基础架构
ResourceManager (RM)
: 是YARN的中心节点,负责整个系统的资源管理和应用程序调度。它接收来自NodeManager的心跳信号,监控集群资源状态,接收并批准应用程序的资源请求。NodeManager (NM)
: 运行在每个计算节点上,负责管理该节点上的资源(如CPU、内存),执行由ResourceManager分配的任务,监控容器(Container)的状态并向ResourceManager汇报。ApplicationMaster (AM)
: 每个运行在YARN上的应用程序都有一个ApplicationMaster,它负责与ResourceManager协商资源,调度任务到NodeManager上执行,并跟踪任务状态。Container
: 是YARN中的资源抽象单位,包含一定数量的CPU和内存资源,由NodeManager创建和管理,用于运行应用程序的任务。
工作机制
在Hadoop YARN(Yet Another Resource Negotiator)中,工作流程主要涉及ResourceManager (RM),NodeManager (NM) 和 ApplicationMaster (AM) 之间的交互。以下是详细的步骤描述:
- 应用程序提交
- 用户或客户端通过YARN API向ResourceManager提交一个应用程序,这个应用程序可以是MapReduce作业、Spark作业或其他任何YARN支持的应用程序类型。
- ResourceManager的Scheduler组件负责接收应用程序,并为其分配第一个ApplicationMaster所需的资源。
- ApplicationMaster选举与启动
- ResourceManager为应用程序选择一个NodeManager,并在此节点上启动ApplicationMaster。
- ApplicationMaster在启动后,向ResourceManager注册自己,并获取应用程序ID(AppID),随后开始与ResourceManager和NodeManager进行交互。
- 资源申请与分配
- ApplicationMaster向ResourceManager请求资源(即Container),并指定所需资源的类型和数量(例如,CPU核数和内存大小)。
- ResourceManager根据其调度策略(如公平调度器或容量调度器)决定资源分配,并通知相应的NodeManager为ApplicationMaster准备资源。
- Container的创建与任务分配
- NodeManager接收到ResourceManager的命令后,创建Container,并在其中启动ApplicationMaster指定的任务(如Map任务或Reduce任务)。
- ApplicationMaster监控其所有任务的状态,如果任务失败,它会尝试重新申请资源并在不同的节点上重启任务。
- 任务执行
- Container中的任务开始执行,NodeManager监控Container的健康状态和资源使用情况,并定期向ResourceManager发送心跳信息报告状态。
- ApplicationMaster持续监控所有任务的进度,与ResourceManager协调资源,必要时重新分配或重新启动任务。
- 应用程序完成
- 当应用程序的所有任务都完成后,ApplicationMaster向ResourceManager报告应用程序已完成,并请求关闭所有为该应用程序分配的资源。
- ResourceManager接收此消息后,通知所有相关的NodeManager释放这些Container,并更新其内部的资源分配状态。
ApplicationMaster完成其工作并退出,ResourceManager将其从活动应用程序列表中移除。
- 故障恢复
- 如果在任何时候ApplicationMaster或NodeManager发生故障,ResourceManager能够检测到这种情况,并采取相应的恢复措施。例如,ResourceManager可以重新启动ApplicationMaster,或者在其他健康的NodeManager上重新启动失败的任务。
- 通过上述流程,YARN实现了资源的统一管理和调度,允许多种类型的应用程序在同一个集群中运行,提高了资源的利用率和系统的灵活性。
作业提交全过程
去看尚硅谷的教案