YARN 深度解析专栏导览
专栏定位
本专栏是 HDFS 深度解析 专栏的姊妹篇。HDFS 解决了”数据存在哪里”的问题,YARN 解决的是”计算在哪里跑、用多少资源”的问题。两者共同构成了 Hadoop 生态的基础设施层。
本专栏的定位是工程师视角的 YARN 底层原理解析:不停留在”ResourceManager 负责资源管理”这样的表层描述,而是深入到资源模型的设计权衡、调度器的算法细节、Container 启动的 RPC 调用链、CGroups 资源隔离的内核机制。每一个设计决策背后的”为什么”,是本专栏最核心的关注点。
文章列表
| 编号 | 文章标题 | 核心主题 |
|---|---|---|
| 01 | 01 YARN 的诞生——从 MRv1 到资源管理与计算分离 | MRv1 的四大瓶颈、YARN 的设计目标、计算框架无关性 |
| 02 | 02 YARN 整体架构全景——ResourceManager、NodeManager 与 ApplicationMaster 三角协作 | 三大核心组件的职责边界、整体交互协议 |
| 03 | 03 ResourceManager 深度解析——调度器内核与资源抽象模型 | Resource 抽象、ResourceRequest、调度器接口设计 |
| 04 | 04 Container 生命周期——从资源申请到进程启动的完整调用链 | AM 申请 Container、NM 启动 Container 的 RPC 全路径 |
| 05 | 05 调度器深度解析——Capacity Scheduler 与 Fair Scheduler 的算法内核 | 队列树模型、抢占机制、资源计算算法 |
| 06 | 06 ApplicationMaster 机制——以 Spark on YARN 为例 | AM 的注册、资源谈判、Container 分配策略 |
| 07 | 07 YARN 资源隔离——CGroups 与 Linux Container Executor 的工程实现 | CGroups 集成、LinuxContainerExecutor、CPU/内存隔离 |
| 08 | 08 YARN 高可用与故障恢复——ResourceManager HA 与 AM 重试机制 | RM HA、ZK 状态存储、AM 重启、Container 恢复 |
| 09 | 09 YARN 性能调优与生产实践——队列配置、节点标签与调度优化 | 节点标签、GPU 调度、队列调优、生产参数清单 |
推荐阅读路径
入门路径(理解 YARN 是什么):01 → 02 → 04
深度路径(理解 YARN 怎么工作):01 → 02 → 03 → 05 → 06
运维路径(在生产环境用好 YARN):02 → 07 → 08 → 09
Spark 调优路径(理解 Spark on YARN 的资源行为):03 → 04 → 05 → 06
前置知识
- Linux CGroups:第 07 篇会深入讲解,但提前了解 CGroups 基本概念有助于理解 Container 资源隔离
- HDFS 整体架构:YARN 与 HDFS 紧密协作(数据本地性调度),建议先阅读 HDFS 专栏的第 02 篇
- MapReduce 编程模型:第 01 篇会从 MRv1 的局限出发讲解 YARN 的诞生,了解 MR 基本原理有助于理解演进动机
技术范围说明
本专栏聚焦于 YARN 本身的核心机制,以下内容超出范围不做深入展开:
- Spark 内部调度机制(DAGScheduler、TaskScheduler):这是 Spark 专栏的主题
- Flink on YARN 的细节:本专栏在第 06 篇以 Spark on YARN 为主要示例,Flink 只作对比提及
- Kubernetes 资源调度:Kubernetes 与 YARN 的对比分析在第 09 篇会有简要介绍
- HDFS 存储机制:详见 HDFS 专栏
关联专栏
- HDFS:YARN 数据本地性调度依赖 HDFS 块位置
- Spark 调度系统:Spark on YARN 的资源申请与调度
- Flink 原理:Flink on YARN 的部署模式
- Kubernetes:K8s vs YARN 的资源调度对比
- 进程管理:CGroups 容器资源隔离的底层原理
专栏持续更新中。如发现错误或有补充建议,欢迎在 Obsidian 的评论中留言。