什么是Hadoop Yarn

Hadoop YARN:分布式集群资源管理系统详解

1. 什么是YARN?

YARN (Yet Another Resource Negotiator)是 Apache Hadoop 生态系统中的资源管理和作业调度系统 ,最初在 Hadoop 2.0 中引入,取代了 Hadoop 1.0MapReduce 1(MRv1) 架构。它的核心目标是提高集群资源利用率 ,并支持多种计算框架(如 MapReduce、Spark、Flink 等)在同一个集群上运行。


2. YARN 的核心作用

YARN 的主要职责是:

  1. 资源管理:统一管理 Hadoop 集群的计算资源(CPU、内存等)。
  2. 任务调度:协调不同应用程序(如 MapReduce、Spark)的资源分配。
  3. 多框架支持:允许不同的计算引擎(如批处理、流处理、机器学习)共享集群资源。

3. YARN 的架构

YARN 采用 主从(Master-Slave)架构,主要由以下三个核心组件组成:

(1) ResourceManager(RM)

  • 集群资源的总调度者,负责全局资源分配。
  • 包含两个子组件:
    • Scheduler(调度器):负责分配资源(不监控任务状态)。
    • ApplicationsManager(应用管理器):负责接收任务提交、启动 ApplicationMaster 等。

(2) NodeManager(NM)

  • 每个工作节点(DataNode)上的代理 ,负责:
    • 向 ResourceManager 汇报本节点的资源(CPU、内存)。
    • 管理 Container(容器),执行具体的计算任务。

(3) ApplicationMaster(AM)

  • 每个应用程序(如 MapReduce、Spark Job)的专属管理者 ,负责:
    • 向 ResourceManager 申请资源。
    • 与 NodeManager 协作启动和监控任务(如 Map Task、Reduce Task)。

4. YARN 的工作流程

  1. 客户端提交任务 (如 hadoop jar 提交 MapReduce 作业)。
  2. ResourceManager 分配 ApplicationMaster
    • RM 选择一个 NodeManager 启动 AM。
  3. ApplicationMaster 申请资源
    • AM 向 RM 申请 Container(计算资源单元)。
  4. NodeManager 启动任务
    • RM 分配 Container 后,NM 启动具体的 Task(如 Map Task)。
  5. 任务执行与监控
    • AM 监控任务状态,失败时申请新资源重试。
  6. 任务完成,释放资源
    • AM 向 RM 注销,释放占用的资源。

5. YARN 的调度器

YARN 支持多种调度策略,常见的有:

调度器 特点 适用场景
FIFO Scheduler 先进先出,简单但资源利用率低 测试环境
Capacity Scheduler 队列划分,保证资源隔离(Hadoop 默认) 多租户集群
Fair Scheduler 动态平衡资源,公平共享 混合负载(如批处理 + 交互式查询)

6. YARN 的优势

  1. 高资源利用率:多个框架共享集群,避免资源浪费。
  2. 扩展性:支持数千节点的大规模集群。
  3. 灵活性:不仅支持 MapReduce,还能运行 Spark、Flink、Tez 等。
  4. 多租户支持:通过队列管理不同团队/任务优先级。

7. YARN 的局限性

  1. 不适合低延迟任务:默认调度策略对实时计算(如 Storm)支持较弱。
  2. 资源隔离依赖 Container:若任务异常(如内存泄漏),可能影响整个节点。
  3. 小文件处理效率低:Hadoop 生态的通病,需结合其他优化手段。

8. YARN 的应用场景

  • 批处理计算:MapReduce、Hive 查询
  • 交互式分析:Spark SQL、Presto
  • 流处理:Flink、Spark Streaming
  • 机器学习:TensorFlow on YARN、MLlib

9. 总结

YARN 是 Hadoop 2.0+ 的核心资源管理层 ,它通过解耦资源管理和任务调度 ,使 Hadoop 从单一的 MapReduce 计算框架演变为支持多种计算模式的通用大数据平台。尽管后续出现更轻量的资源管理工具(如 Kubernetes),YARN 仍是企业级 Hadoop 生态的基石。

学习建议:掌握 YARN 的架构和调度原理,是深入理解 Hadoop、Spark 等大数据技术的关键一步!

相关推荐
Lx3521 小时前
Hadoop日志分析实战:快速定位问题的技巧
大数据·hadoop
喂完待续4 小时前
【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
大数据·数据仓库·hive·hadoop·sql·apache
SelectDB4 小时前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache
写bug写bug5 小时前
分布式锁的使用场景和常见实现(下)
分布式·后端·面试
最初的↘那颗心5 小时前
Flink Stream API 源码走读 - window 和 sum
大数据·hadoop·flink·源码·实时计算·窗口函数
Yusei_05237 小时前
迅速掌握Git通用指令
大数据·git·elasticsearch
一只栖枝13 小时前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
喂完待续17 小时前
Apache Hudi:数据湖的实时革命
大数据·数据仓库·分布式·架构·apache·数据库架构
青云交17 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
计艺回忆路19 小时前
从Podman开始一步步构建Hadoop开发集群
hadoop