YARN产生的技术需求
YARN是Hadoop v2.0 引入的核心组件。YARN 从某种那个意义上来说应该算做是一个云操作系统,它负责集群的资源管理 和任务调度,在 YARN 之上可以开发各类的应用程序,例如批处理 MapReduce, 内存处理 Spark, 流式处理 Storm 等等。这些应用可以同时利用 Hadoop 集群的计算能力和丰富的数据存储模型,共享同一个 Hadoop 集群和驻留在集群上的数据。此外,这些新的框架还可以利用 YARN 的资源管理器,提供新的应用管理器实现。
- 直接源于MapReduce v1.0在几个方面的缺陷:
- 扩展性受限
- 单点故障
- 难以支持MR之外的计算框架
- 多计算框架各自为战,数据共享困难,比如
- MR:离线计算框架
- Storm:实时计算框架
- Spark:内存计算框架
YARN支持多种计算框架
YARN的基本架构
我们可以把 YARN 视为 Hadoop 生态系统的大脑或者说云操作系统。
ResourceManager
ResourceManager(RM)是一个全局的资源管理器 ,负责整个系统的资源管理和分配。
- 在接收到处理请求时,它相应地将部分请求传递 给相应的Node Manager节点管理器,在那里进行实际的处理。
- RM优化集群利用率,例如根据容量保证、公平性和 SLA 等各种限制,始终保持所有资源处于使用状态
它主要由两个组件构成:调度器 (Scheduler)和应用程序管理器(Applications Manager)
-
调度器(Scheduler)
-
调度器负责将资源分配 给各种正在运行的应用程序。而资源分配单位用一个抽象概念"资源容器 "(Resource Container, 简称 Container)来表示。container下面再具体介绍
-
调度器是纯调度程序。意味着不会对应用程序执行任何状态监控。也不负责重新启动因执行失败或硬件故障导致的失败任务
-
它有一个可插拔的策略插件,负责在各种应用之间划分集群资源。有两个这样的插件: Capacity Scheduler 和 Fair Scheduler
-
-
应用程序管理器(Applications Manager)
- 它负责管理整个系统中所有应用程序。包括括应用程序提交、与调度器协商资源以启动 Application Master、监控 Application Master 运行状态并在失败时重新启动它等
NodeManager
- 它负责处理 Hadoop 集群中的各个节点,并 管理给定节点上的用户作业和工作流
- 它向资源管理器注册并发送带有节点健康状态的心跳。
- 它的主要目标是管理资源管理器分配给它的应用程序容器。
- 它与资源管理器保持同步。
- 应用程序主机通过向节点管理器发送容器启动上下文 (CLC) 来从节点管理器请求分配的容器,其中包含应用程序运行所需的一切。节点管理器创建请求的容器进程并启动它。
- 监控单个容器的资源使用情况(内存、CPU)。
- 执行日志管理。
- 它还按照资源管理器的指示杀死容器。
ApplicationMaster
- 每个应用有一个,负责应用程序的管理。它是一个特定于框架的实体
- 它的任务是从资源管理器协商资源,并与节点管理器一起执行和监控组件任务。
- 一旦启动,它会定期向资源管理器发送心跳以确认其健康状况并更新其资源需求记录。
Container
- 它是单个节点上的物理资源的集合,例如 RAM、CPU 内核和磁盘。
- 当 AM 向 RM 申请资源时,RM 为 AM 返回的资源便是用 Container 表示。YARN 会为每个任务分配一个 Container, 且该任务只能使用该 Container 中描述的资源。
HDFS与YARN
hdfs有自己的框架,yarn也有自己的框架,但这两个框架是紧密结合的,比如namenode上启动RM、DataNode上启动NM