YARN
YARN(Yet Another Resource Negotiator)是 Hadoop 的资源管理系统。
概述
YARN 负责管理集群的资源分配和任务调度,是 Hadoop 2.x 的核心组件。
架构组成
ResourceManager
ResourceManager 是集群资源的管理者:
- 负责整个集群的资源分配
- 调度 ApplicationMaster
- 监控 NodeManager
NodeManager
NodeManager 是单个节点的资源管理者:
- 管理节点上的资源(CPU、内存)
- 启动和监控 Container
- 向 ResourceManager 汇报状态
ApplicationMaster
ApplicationMaster 管理单个应用的执行:
- 向 ResourceManager 请求资源
- 与 NodeManager 通信启动任务
- 监控任务执行状态
工作流程
- Client 提交作业: 客户端向 ResourceManager 提交应用
- ResourceManager 分配 Container: ResourceManager 分配第一个 Container 运行 ApplicationMaster
- ApplicationMaster 启动: ApplicationMaster 启动并向 ResourceManager 注册
- 资源请求: ApplicationMaster 向 ResourceManager 请求资源
- Container 分配: ResourceManager 分配 Container 给 ApplicationMaster
- 任务执行: ApplicationMaster 启动任务执行
- 作业完成: 所有任务完成后,ApplicationMaster 向 ResourceManager 注销
调度器类型
FIFO 调度器
FIFO 调度器按照作业提交顺序进行调度:
- 简单易用
- 不支持优先级
- 不适合多用户环境
Capacity 调度器
Capacity 调度器支持多队列和资源池:
- 支持多个队列
- 支持资源共享
- 支持优先级
Fair 调度器
Fair 调度器公平分配资源:
- 动态调整资源分配
- 支持权重配置
- 适合多用户环境
资源管理
YARN 使用 Container 作为资源分配的基本单位:
- 内存: 以 MB 为单位
- CPU: 以虚拟 CPU 核数为单位
- 磁盘: 可选配置
优点
- 资源隔离: 不同应用之间资源隔离
- 弹性扩展: 支持动态添加节点
- 多租户: 支持多用户共享集群