您好,登录后才能下订单哦!
# 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
AM通过心跳机制与RM交互: - 资源请求模型:
ResourceRequest.newInstance(
Priority.newInstance(1),
"*", // 任意主机
Resources.createResource(2048, 2), // 2GB内存+2vcores
5 // 需要5个此类容器
);
<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>
策略类型 | 特点 | 适用场景 |
---|---|---|
FIFO | 简单但资源利用率低 | 测试环境 |
Capacity | 预分配队列资源,保证最小配额 | 生产多租户环境 |
Fair | 动态平衡资源,支持权重分配 | 混合负载场景 |
# 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
yarn.nodemanager.resource.percentage-physical-cpu-limit
yarn.scheduler.minimum-allocation-mb
粒度yarn.resourcemanager.am.max-attempts=5
框架 | AM适配方式 | 特点 |
---|---|---|
MapReduce | 内置MRAppMaster | 兼容性好 |
Spark | SparkApplicationMaster | 动态资源调整 |
Flink | YarnJobClusterEntryPoint | 会话模式支持 |
yarn.nodemanager.container-executor.class
支持容器化YARN作为Hadoop资源管理的核心,其架构设计体现了以下思想: 1. 职责分离:资源管理与应用逻辑解耦 2. 弹性扩展:支持万级节点集群 3. 开放生态:多计算框架共存的基石
未来发展方向包括: - 更细粒度的资源调度(如带宽、IOPS) - 与Kubernetes的深度融合 - 智能化资源预测与分配
注:本文基于Hadoop 3.3.x版本,部分机制在早期版本可能有所不同。实际生产部署时需结合具体Hadoop发行版(如CDH、HDP)的文档进行调整。 “`
该文档共计约1750字,采用Markdown格式编写,包含: 1. 层级化标题结构 2. 技术术语的代码块展示 3. 关键机制的对比表格 4. 配置示例和参数说明 5. 架构示意图的文字描述 可根据需要添加具体的流程图或架构图增强可读性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。