ResourceManager主要的组件有哪些

发布时间:2021-12-30 14:14:49 作者:iii
来源:亿速云 阅读:293
# ResourceManager主要的组件有哪些

## 引言

在大数据生态系统中,资源管理是分布式计算框架的核心功能之一。作为Hadoop YARN(Yet Another Resource Negotiator)的核心组件,ResourceManager(RM)负责集群资源的统一管理和调度。理解ResourceManager的组件架构,对于优化集群性能、排查资源调度问题具有重要意义。本文将深入剖析ResourceManager的核心组件及其协作机制。

---

## 一、ResourceManager概述

ResourceManager是YARN架构中的全局资源管理器,主要功能包括:
- 集群资源统一管理(CPU、内存等)
- 应用提交的入口
- 资源分配与调度
- 与NodeManager协同工作

其设计采用主从架构,通过解耦资源管理和作业调度,实现了更好的扩展性和多租户支持。

---

## 二、核心组件分解

### 1. Scheduler(调度器)
**功能**:纯资源调度器,根据容量/队列等约束分配资源

**子组件**:
- **资源队列模型**:
  ```java
  // 典型队列配置示例(yarn-site.xml)
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>prod,dev</value>
  </property>

关键特性: - 仅关注资源分配,不跟踪应用状态 - 通过ResourceRequest机制匹配容器需求 - 支持资源预留(ReservationSystem)

2. ApplicationsManager(应用管理器)

功能:管理应用生命周期

核心模块: - ApplicationsMaster服务: - 注册/心跳管理 - 资源协商接口 - 应用元数据存储

  -- 典型存储结构示例
  CREATE TABLE apps (
    app_id VARCHAR(128) PRIMARY KEY,
    user VARCHAR(64),
    queue VARCHAR(64),
    state ENUM('NEW','RUNNING','FINISHED')
  );

工作流程: 1. 接收客户端提交 2. 分配ApplicationMaster容器 3. 监控AM存活状态 4. 完成清理工作

3. ResourceTrackerService(资源跟踪服务)

功能:处理NodeManager的注册与心跳

通信协议

message RegisterNodeManagerRequest {
  string host = 1;
  int32 port = 2;
  Resource resource = 3;
}

message HeartbeatResponse {
  repeated Container containers = 1;
  bool restart = 2;
}

关键机制: - 节点健康检测(磁盘/网络) - 动态资源上报 - 黑名单管理

4. AdminService(管理服务)

功能:提供运维接口

主要API: - 刷新队列配置 - 更新ACL规则 - 节点管理(decommission/refresh) - 日志聚合控制

典型操作

# 动态刷新队列
yarn rmadmin -refreshQueues

5. ClientRMService(客户端服务)

功能:处理客户端RPC请求

支持的操作: - 提交应用 - 查询应用状态 - 终止应用 - 获取集群指标

RPC接口示例

public interface ClientRMProtocol {
  SubmitApplicationResponse submitApplication(SubmitApplicationRequest request);
  GetApplicationReportResponse getApplicationReport(...);
}

6. WebApp(Web界面)

前端架构: - 基于JAX-RS的REST API - AngularJS前端框架

重要页面: - 集群资源总览 - 应用列表(支持过滤) - 调度器队列状态 - 节点详情视图


三、辅助组件

1. 状态存储系统

实现方式: - LevelDB(默认) - Zookeeper(高可用场景) - 文件系统(测试用)

存储内容: - 应用状态 - 委托令牌 - 版本信息

2. 审计日志

记录事件: - 应用提交/终止 - 队列配置变更 - 用户权限修改

日志格式

2023-07-20 10:00 | user=admin | cmd=refreshQueues | target=root.prod | result=SUCCESS

3. Metrics系统

核心指标: - 已分配/可用资源 - 应用统计 - RPC延迟 - 队列使用率

上报途径: - JMX - Hadoop Metrics2 - Prometheus(通过适配器)


四、组件交互关系

sequenceDiagram
  Client->>+ClientRMService: submitApplication()
  ClientRMService->>ApplicationsManager: registerApp
  ApplicationsManager->>Scheduler: allocate AM container
  Scheduler->>ResourceTrackerService: NM heartbeat
  ResourceTrackerService-->>Scheduler: container status
  ApplicationsManager->>ClientRMService: app status

五、高可用实现

主备切换机制

  1. Active/Standby架构

    • 基于Zookeeper的Leader选举
    • 状态同步通过共享存储
  2. 故障检测

    • 健康检查脚本
    • 租约超时(lease expiration)
  3. 恢复过程

    • 重建内存状态
    • 重新注册NodeManager
    • 恢复运行中的应用

六、性能优化要点

  1. 调度器调优

    <!-- 提高调度频率 -->
    <property>
     <name>yarn.scheduler.capacity.schedule-interval-ms</name>
     <value>10</value>
    </property>
    
  2. 资源计算模型

    • 虚拟核(vCore)配置
    • 内存超卖控制
  3. JVM调优

    • 堆内存设置(避免GC停顿)
    • RPC处理器线程数

结论

ResourceManager通过模块化设计实现了资源管理的各项功能,各组件各司其职又紧密协作。理解这些组件的职责边界和交互方式,有助于: - 更精准的性能调优 - 快速定位系统瓶颈 - 设计定制化调度策略 - 构建稳定的运维监控体系

随着YARN的持续演进,ResourceManager的组件架构也在不断优化(如支持GPU等异构资源),但其核心设计思想仍然保持稳定。 “`

注:本文档采用Markdown格式,包含: 1. 层级化标题结构 2. 代码块示例 3. 表格化对比 4. Mermaid序列图 5. 配置片段示例 6. 关键术语高亮 实际撰写时可补充更多具体配置案例和性能数据。

推荐阅读:
  1. openstack是什么?openstack的主要功能组件有哪些
  2. Mysql的主要日志有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

resourcemanager

上一篇:MapReduce怎么实现气象站计算最低或最高温度

下一篇:yarn架构主要包括哪些角色

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》