您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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
调度器(Scheduler):
应用管理器(ApplicationsManager):
<!-- 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>
# 查看节点资源使用
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
资源类型 | 描述 | 配置参数 |
---|---|---|
内存 | 以MB为单位 | yarn.nodemanager.resource.memory-mb |
vCPU | 虚拟核数(可超卖) | yarn.nodemanager.resource.cpu-vcores |
GPU | YARN 3.1+支持 | yarn.resource-types |
// 典型资源请求示例
ResourceRequest request = ResourceRequest.newInstance(
Priority.newInstance(1),
"*", // 任意主机
Resources.createResource(4096, 2), // 4GB内存+2vCPU
1); // 请求数量
特性 | Capacity Scheduler | Fair Scheduler |
---|---|---|
设计目标 | 多租户资源保障 | 动态公平分配 |
队列配置 | 静态预分配 | 动态权重调整 |
资源抢占 | 支持(需手动配置) | 内置自动抢占 |
适用场景 | 生产环境(多团队) | 实验性环境 |
sequenceDiagram
Client->>+RM: submitApplication()
RM->>+AM: allocate Container
AM->>NM: start Container
NM-->>-AM: Container status
AM-->>-RM: register & request resources
<!-- 关键性能参数 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>物理内存 * 0.8</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>单个节点最大内存</value>
</property>
kinit -kt /etc/security/keytabs/yarn.service.keytab yarn/_HOST@REALM
<property>
<name>yarn.admin.acl</name>
<value>user1,user2 group1,group2</value>
</property>
指标类别 | 关键指标 | 监控工具 |
---|---|---|
集群资源 | 总内存/已用内存 | Ambari/Grafana |
应用状态 | 运行中/等待中的应用数 | YARN ResourceManager UI |
队列使用 | 队列资源利用率 | Capacity Scheduler UI |
AM启动失败:
资源分配阻塞:
yarn queue -status <queue_name>
Yarn作为Hadoop资源管理的核心,其架构设计体现了以下精髓: 1. 分层调度思想(全局调度与框架特定调度分离) 2. 声明式资源请求模型 3. 松耦合的组件设计
未来发展方向: - 更细粒度的资源调度(如带宽、IOPS) - 异构计算支持(FPGA、TPU等) - 与Serverless架构的融合 “`
注:本文实际约3600字,可根据需要补充以下内容扩展: 1. 具体调度算法实现细节(如DominantResourceCalculator) 2. YARN Federation架构详解 3. 与Mesos/K8s的对比分析 4. 更多生产环境案例数据
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。