Hadoop框架中Yarn基本结构和运行原理是什么

发布时间:2021-12-03 18:27:06 作者:柒染
来源:亿速云 阅读:195
# Hadoop框架中Yarn基本结构和运行原理是什么

## 一、Yarn概述

### 1.1 Yarn的诞生背景
Apache Hadoop YARN(Yet Another Resource Negotiator)是Hadoop 2.0引入的核心组件,主要解决第一代MapReduce框架(MRv1)的扩展性瓶颈问题。在MRv1架构中,JobTracker同时承担资源管理和作业调度的双重职责,导致:
- 集群规模受限(通常不超过4000节点)
- 仅支持MapReduce计算模型
- 资源利用率低下(静态槽位分配)

### 1.2 Yarn的定位
YARN作为Hadoop的资源管理系统,实现了:
- **资源统一管理**:支持CPU、内存等资源的细粒度分配
- **多计算框架支持**:可运行MapReduce、Spark、Flink等不同计算模型
- **层级化架构**:分离资源管理和应用管理职责

## 二、Yarn基本架构

### 2.1 核心组件构成
YARN采用Master/Slave架构,主要包含以下组件:

| 组件                | 角色说明                                                                 |
|---------------------|--------------------------------------------------------------------------|
| ResourceManager(RM) | 全局资源管理器,负责系统资源分配与调度                                  |
| NodeManager(NM)     | 单节点代理,管理容器生命周期和本地资源                                  |
| ApplicationMaster(AM)| 应用级控制器,负责单个应用的资源协商和任务监控                          |
| Container           | 资源抽象单元(包含CPU核数、内存等),运行应用任务的隔离环境             |

### 2.2 服务分层模型

+———————–+ | Applications | (MapReduce/Spark等) +———————–+ | ApplicationMaster(AM) | (每个应用独享) +———————–+ | YARN Layer | | ResourceManager (RM) | | NodeManager (NM) | +———————–+ | HDFS Layer | +———————–+


## 三、Yarn运行原理详解

### 3.1 应用提交阶段
1. **客户端提交请求**:
   ```shell
   hadoop jar application.jar -D yarn.app.mapreduce.am.resource.mb=1536
  1. RM分配第一个Container(AM容器)
  2. 创建ApplicationMaster进程

3.2 资源申请与分配

AM通过心跳机制与RM交互: - 资源请求模型

  ResourceRequest.newInstance(
      Priority.newInstance(1), 
      "*", // 任意主机
      Resources.createResource(2048, 2), // 2GB内存+2vcores
      5    // 需要5个此类容器
  );

3.3 任务执行流程

  1. AM获取Container后,通过NM协议启动任务
  2. NM创建隔离的容器环境:
    • Linux cgroups实现资源限制
    • 独立的JVM进程
  3. 任务执行期间AM监控状态,失败时自动重试

3.4 应用完成阶段

  1. AM向RM注销并发送最终状态
  2. RM清理应用记录
  3. NM回收所有相关Container

四、核心机制解析

4.1 资源调度模型

4.1.1 层级队列

<configuration>
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>prod,dev</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.queues</name>
    <value>research,development</value>
  </property>
</configuration>

4.1.2 调度策略对比

策略类型 特点 适用场景
FIFO 简单但资源利用率低 测试环境
Capacity 预分配队列资源,保证最小配额 生产多租户环境
Fair 动态平衡资源,支持权重分配 混合负载场景

4.2 容错机制

4.3 资源隔离

五、Yarn优化实践

5.1 关键配置参数

# yarn-site.xml
yarn.nodemanager.resource.memory-mb: 集群单节点可用物理内存的80%
yarn.scheduler.minimum-allocation-mb: 默认1024(1GB)
yarn.nodemanager.vmem-check-enabled: false (禁用虚拟内存检查)

# 启用资源标签
yarn.node-labels.enabled: true
yarn.node-labels.am.default-node-label-expression: GPU

5.2 性能调优方向

  1. 资源超卖:配置yarn.nodemanager.resource.percentage-physical-cpu-limit
  2. 调度延迟优化:减小yarn.scheduler.minimum-allocation-mb粒度
  3. AM高可用:设置yarn.resourcemanager.am.max-attempts=5

六、Yarn生态扩展

6.1 支持的计算框架

框架 AM适配方式 特点
MapReduce 内置MRAppMaster 兼容性好
Spark SparkApplicationMaster 动态资源调整
Flink YarnJobClusterEntryPoint 会话模式支持

6.2 新兴特性

七、总结与展望

YARN作为Hadoop资源管理的核心,其架构设计体现了以下思想: 1. 职责分离:资源管理与应用逻辑解耦 2. 弹性扩展:支持万级节点集群 3. 开放生态:多计算框架共存的基石

未来发展方向包括: - 更细粒度的资源调度(如带宽、IOPS) - 与Kubernetes的深度融合 - 智能化资源预测与分配

注:本文基于Hadoop 3.3.x版本,部分机制在早期版本可能有所不同。实际生产部署时需结合具体Hadoop发行版(如CDH、HDP)的文档进行调整。 “`

该文档共计约1750字,采用Markdown格式编写,包含: 1. 层级化标题结构 2. 技术术语的代码块展示 3. 关键机制的对比表格 4. 配置示例和参数说明 5. 架构示意图的文字描述 可根据需要添加具体的流程图或架构图增强可读性。

推荐阅读:
  1. Hadoop 之 Yarn
  2. HADOOP YARN(一)

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

hadoop yarn

上一篇:如何分析Kafka时间轮原理

下一篇:网页里段落的html标签是哪些

相关阅读

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

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