Skip to content

YARN

YARN(Yet Another Resource Negotiator)是 Hadoop 的资源管理系统。

概述

YARN 负责管理集群的资源分配和任务调度,是 Hadoop 2.x 的核心组件。

架构组成

ResourceManager

ResourceManager 是集群资源的管理者:

  • 负责整个集群的资源分配
  • 调度 ApplicationMaster
  • 监控 NodeManager

NodeManager

NodeManager 是单个节点的资源管理者:

  • 管理节点上的资源(CPU、内存)
  • 启动和监控 Container
  • 向 ResourceManager 汇报状态

ApplicationMaster

ApplicationMaster 管理单个应用的执行:

  • 向 ResourceManager 请求资源
  • 与 NodeManager 通信启动任务
  • 监控任务执行状态

工作流程

  1. Client 提交作业: 客户端向 ResourceManager 提交应用
  2. ResourceManager 分配 Container: ResourceManager 分配第一个 Container 运行 ApplicationMaster
  3. ApplicationMaster 启动: ApplicationMaster 启动并向 ResourceManager 注册
  4. 资源请求: ApplicationMaster 向 ResourceManager 请求资源
  5. Container 分配: ResourceManager 分配 Container 给 ApplicationMaster
  6. 任务执行: ApplicationMaster 启动任务执行
  7. 作业完成: 所有任务完成后,ApplicationMaster 向 ResourceManager 注销

调度器类型

FIFO 调度器

FIFO 调度器按照作业提交顺序进行调度:

  • 简单易用
  • 不支持优先级
  • 不适合多用户环境

Capacity 调度器

Capacity 调度器支持多队列和资源池:

  • 支持多个队列
  • 支持资源共享
  • 支持优先级

Fair 调度器

Fair 调度器公平分配资源:

  • 动态调整资源分配
  • 支持权重配置
  • 适合多用户环境

资源管理

YARN 使用 Container 作为资源分配的基本单位:

  • 内存: 以 MB 为单位
  • CPU: 以虚拟 CPU 核数为单位
  • 磁盘: 可选配置

优点

  • 资源隔离: 不同应用之间资源隔离
  • 弹性扩展: 支持动态添加节点
  • 多租户: 支持多用户共享集群