Yarn运行原理,以及三大组件ResourceManager、NodeManager、ApplicationMaster的介绍
企业开发
2023-07-12 15:54:17
阅读次数: 0
Yarn运行原理:
- client 向 ResourceManager 提交应用程序,其中包括启动该应用的 ApplicationMaster 的必须信息,例如 ApplicationMaster 程序、启动 ApplicationMaster 的命令、用户程序等。
- ResourceManager 启动一个 container 用于运行 ApplicationMaster。
- 启动中的 ApplicationMaster 向 ResourceManager 注册自己,启动成功后与 ResourceManager 保持心跳。
- ApplicationMaster 向 ResourceManager 发送请求,申请相应数目的 container。
- ResourceManager 返回 ApplicationMaster 的申请的 containers 信息。申请成功的 container,由 ApplicationMaster 进行初始化。container 的启动信息初始化后,ApplicationMaster 与对应的 NodeManager 通信,要求 NodeManager 启动 container。ApplicationMaster 与 NodeManager 保持心跳,从而对 NodeManager 上运行的任务进行监控和管理。
- container 运行期间,ApplicationMaster 对 container 进行监控。container 通过 RPC 协议向对应的 ApplicationMaster 汇报自己的进度和状态等信息。
- 应用运行期间,client 直接与 ApplicationMaster 通信获取应用的状态、进度更新等信息。
- 应用运行结束后,ApplicationMaster 向 ResourceManager 注销自己,并允许属于它的 container 被收回。
ResourceManager介绍:
- ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。
- NodeManager 以心跳的方式向 ResourceManager 汇报资源使用情况(目前主要是 CPU 和内存的使用情况)。ResourceManager 只接受 NodeManager 的资源回报信息,对于具体的资源处理则交给 NodeManager 自己处理。
- YARN Scheduler 根据 application 的请求为其分配资源,不负责 application job 的监控、追踪、运行状态反馈、启动等工作。
NodeManager介绍:
- NodeManager 是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。YARN 集群每个节点都运行一个
- NodeManager。NodeManager 定时向 ResourceManager 汇报本节点资源(CPU、内存)的使用情况和Container 的运行状态。当 ResourceManager 宕机时 NodeManager 自动连接 RM 备用节点。
- NodeManager 接收并处理来自 ApplicationMaster 的 Container 启动、停止等各种请求。
ApplicationMaster介绍:
- 用 户 提 交 的 每 个 应 用 程 序 均 包 含 一 个 ApplicationMaster , 它 可 以 运 行 在ResourceManager 以外的机器上。
- 负责与 RM 调度器协商以获取资源(用 Container 表示)。
- 将得到的任务进一步分配给内部的任务(资源的二次分配)。 与 NM 通信以启动/停止任务。
- 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。
- 当前 YARN 自带了两个 ApplicationMaster 实现,一个是用于演示 AM 编写方法的实例程序 DistributedShell,它可以申请一定数目的 Container 以并行运行一个 Shell 命令或者 Shell 脚本;另一个是运行 MapReduce 应用程序的 AM—MRAppMaster。
- 注:RM 只负责监控 AM,并在 AM 运行失败时候启动它。RM 不负责 AM 内部任务的容错,任务的容错由 AM 完成。
转载自blog.csdn.net/qq_17685725/article/details/123244310