Hadoop中Yarn架构是什么样的

发布时间:2021-12-09 14:48:34 作者:小新
来源:亿速云 阅读:205
# Hadoop中Yarn架构是什么样的

## 一、Yarn的诞生背景与核心价值

### 1.1 MapReduce 1.0的局限性
在Hadoop早期版本(1.x)中,MapReduce框架存在明显的架构缺陷:
- **单点故障风险**:JobTracker同时负责资源管理和作业调度
- **扩展性瓶颈**:集群规模上限约4000节点
- **资源利用率低**:静态槽位分配导致资源碎片化
- **多计算范式支持不足**:仅支持MapReduce模型

### 1.2 Yarn的设计目标
Apache Yarn(Yet Another Resource Negotiator)作为Hadoop 2.0的核心组件,实现了:
- **资源管理与作业调度解耦**
- 支持10,000+节点规模
- 资源利用率提升40%以上(实际生产环境数据)
- 多计算框架统一管理(Spark、Flink、Tez等)

## 二、Yarn架构核心组件

### 2.1 全局资源管理器(ResourceManager)
```mermaid
graph TD
    RM[ResourceManager] --> Scheduler
    RM --> ApplicationsManager
    Scheduler --> CapacityScheduler
    Scheduler --> FairScheduler

2.1.1 核心服务

2.1.2 关键配置参数

<!-- yarn-site.xml -->
<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value>  <!-- 最小内存分配单位 -->
</property>

2.2 节点管理器(NodeManager)

2.2.1 核心职责

2.2.2 资源监控机制

# 查看节点资源使用
yarn node -list -showDetails

输出示例:

Node-Id         Node-State Node-Http-Address   Containers  
192.168.1.101:8042 RUNNING   192.168.1.101:8042 8/16  
  MemoryUsed: 16GB/32GB, VCoresUsed: 8/16

2.3 应用主控(ApplicationMaster)

2.3.1 框架特性

2.3.2 工作流程

  1. 向RM注册
  2. 发送资源请求(包括本地性要求)
  3. 接收分配到的Container
  4. 与NM协作启动Task

三、Yarn资源模型详解

3.1 资源抽象维度

资源类型 描述 配置参数
内存 以MB为单位 yarn.nodemanager.resource.memory-mb
vCPU 虚拟核数(可超卖) yarn.nodemanager.resource.cpu-vcores
GPU YARN 3.1+支持 yarn.resource-types

3.2 资源请求机制

// 典型资源请求示例
ResourceRequest request = ResourceRequest.newInstance(
    Priority.newInstance(1), 
    "*", // 任意主机
    Resources.createResource(4096, 2), // 4GB内存+2vCPU
    1); // 请求数量

3.3 资源调度算法比较

Capacity Scheduler vs Fair Scheduler

特性 Capacity Scheduler Fair Scheduler
设计目标 多租户资源保障 动态公平分配
队列配置 静态预分配 动态权重调整
资源抢占 支持(需手动配置) 内置自动抢占
适用场景 生产环境(多团队) 实验性环境

四、Yarn工作流程全解析

4.1 作业提交阶段

sequenceDiagram
    Client->>+RM: submitApplication()
    RM->>+AM: allocate Container
    AM->>NM: start Container
    NM-->>-AM: Container status
    AM-->>-RM: register & request resources

4.2 资源分配过程

  1. AM资源请求:带优先级和本地性要求
  2. 调度器决策:基于当前资源状态
  3. 资源分配:生成Container令牌
  4. Container启动:NM验证令牌有效性

4.3 容错处理机制

五、生产环境最佳实践

5.1 性能调优参数

<!-- 关键性能参数 -->
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>物理内存 * 0.8</value>
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>单个节点最大内存</value>
</property>

5.2 安全配置方案

5.3 监控指标体系

指标类别 关键指标 监控工具
集群资源 总内存/已用内存 Ambari/Grafana
应用状态 运行中/等待中的应用数 YARN ResourceManager UI
队列使用 队列资源利用率 Capacity Scheduler UI

六、Yarn技术演进

6.1 最新特性(YARN 3.x)

6.2 与其他技术的整合

七、典型问题解决方案

7.1 常见故障排查

  1. AM启动失败

    • 检查yarn.nodemanager.resource.memory-mb配置
    • 查看NM日志中的OOM信息
  2. 资源分配阻塞

    yarn queue -status <queue_name>
    

7.2 性能瓶颈分析

八、总结与展望

Yarn作为Hadoop资源管理的核心,其架构设计体现了以下精髓: 1. 分层调度思想(全局调度与框架特定调度分离) 2. 声明式资源请求模型 3. 松耦合的组件设计

未来发展方向: - 更细粒度的资源调度(如带宽、IOPS) - 异构计算支持(FPGA、TPU等) - 与Serverless架构的融合 “`

注:本文实际约3600字,可根据需要补充以下内容扩展: 1. 具体调度算法实现细节(如DominantResourceCalculator) 2. YARN Federation架构详解 3. 与Mesos/K8s的对比分析 4. 更多生产环境案例数据

推荐阅读:
  1. Hadoop模式架构是怎么样的
  2. YARN HA架构

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

hadoop yarn

上一篇:如何快速给Hadoop集群加上弹性

下一篇:Hadoop入门基础知识有哪些

相关阅读

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

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