YARN体系学习笔记

Posted Lnho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YARN体系学习笔记相关的知识,希望对你有一定的参考价值。

一、基本组成结构

1. ResourceManager

负责对各个NodeManager 上的资源进行统一管理和调度。包含两个组件:
* Scheduler:调度器根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序
* Applications Manager:应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它等

2. NodeManager

NM 是每个节点上的资源和任务管理器。
* 定时地向RM 汇报本节点上的资源使用情况和各个Container 的运行状态
* 接收并处理来自AM 的Container启动/ 停止等各种请求

3. ApplicationMaster

用户提交的每个应用程序均包含一个AM,主要功能包括:
* 与RM 调度器协商以获取资源(用 Container 表示)
* 将得到的任务进一步分配给内部的任务
* 与 NM 通信以启动 / 停止任务
* 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务

4. Container

Container 是YARN 中的资源抽象, 它封装了某个节点上的多维度资源, 如内存、CPU、磁盘、网络等,当AM 向RM 申请资源时,RM 为AM 返回的资源便是用Container表示的。

二、YARN 的工作流程

  1. 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。
  2. ResourceManager 为该应用程序分配第一个Container,并与对应的Node-Manager 通信,要求它在这个Container中启动应用程序的ApplicationMaster。
  3. ApplicationMaster 首先向ResourceManager 注册,这样用户可以直接通过ResourceManage 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
  4. ApplicationMaster 采用轮询的方式通过RPC 协议向ResourceManager 申请和领取资源。
  5. 一旦ApplicationMaster 申请到资源后,便与对应的NodeManager 通信,要求它启动任务。
  6. NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
  7. 各个任务通过某个RPC 协议向ApplicationMaster 汇报自己的状态和进度,以让ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster 查询应用程序的当前运行状态。
  8. 应用程序运行完成后,ApplicationMaster 向ResourceManager 注销并关闭自己。

以上是关于YARN体系学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

yarn原理 (学习笔记)

Spark 学习笔记之 Standalone与Yarn启动和运行时间测试

Flink学习笔记:搭建Flink on Yarn环境并运行Flink应用

Spark基础学习笔记06:搭建Spark On YARN模式的集群

学习笔记Hadoop—— Hadoop基础操作—— YARN资源管理与调度策略

Spark学习笔记--环境搭建