大数据调度组件
Hadoop核心组件系列-YARN工作流程详解_哔哩哔哩_bilibili
一、基本架构
YARN采用典型的主从(Master/Slave)架构,核心组件如下:
ResourceManager(RM)
全局资源管理器,包含调度器(Scheduler)和应用程序管理器(Applications Manager)。
负责资源分配、队列管理及与客户端/ApplicationMaster交互。
NodeManager(NM)
单节点资源代理,管理容器生命周期、监控资源使用并上报RM。
ApplicationMaster(AM)
每个应用独立进程,负责任务拆分、资源协商及容错。
Container
资源抽象单元,封装CPU、内存等资源,提供隔离环境。
二、设计理念
分层解耦
分离资源管理(RM)与应用逻辑(AM),支持多计算框架(如MapReduce、Spark)。
资源共享与弹性调度
统一资源池化管理,通过动态分配提升利用率(如空闲资源跨队列借用)。
轻量级隔离
基于Cgroups实现容器级资源隔离,避免任务间干扰。
三、高可用(HA)实现
ResourceManager HA:通过ZooKeeper实现主备自动切换,避免单点故障。
状态持久化:RM状态存储于ZooKeeper或HDFS,故障恢复后快速重建上下文。
四、调度策略
FIFO调度器
先进先出,简单但资源利用率低,紧急任务无法插队。
容量调度器
预分队列资源(如A队列80%、B队列20%),允许弹性抢占(如B队列白天可占100%)。
公平调度器
按应用优先级或资源需求动态平衡分配,适合多租户场景。
五、技术选型优缺点
优势 局限性
1. 通用性强:支持多框架(Spark/Flink等) 1. 调度延迟较高,不适合低延迟场景
2. 资源利用率高:动态分配减少空闲 2. 资源模型较简单(仅CPU/内存)
3. 运维友好:标准化API与监控接口 3. 复杂队列配置易引发资源争抢
六、监控与调优
监控手段
原生工具:yarn application -list查看任务状态,RM Web UI分析队列负载。
集成方案:Prometheus+Grafana采集NM/RM指标,自定义告警规则。
调优方向
调度器参数:调整容量调度器的最大资源占比、最小资源保障。
容器配置:优化Container内存/CPU分配,避免OOM或资源碎片。
JVM调优:调整AM/NM的堆内存及GC策略,减少Full GC停顿。
总结
YARN通过分层架构与灵活调度策略,成为大数据生态的核心资源管理平台,但其设计更侧重吞吐量而非实时性。技术选型需权衡通用性、延迟需求及运维复杂度,结合监控数据持续优化资源策略。