yarn的三大组件及各自作用
YARN的三大核心组件及各自作用
YARN(Yet Another Resource Negotiator)采用 主从(Master-Slave)架构,其核心由三大组件构成,分别负责 资源管理、节点资源监控和任务协调。
组件 | 角色 | 核心作用 |
---|---|---|
ResourceManager(RM) | 主节点 | 全局资源调度器,负责整个集群的资源分配和作业调度。 |
NodeManager(NM) | 从节点 | 单个节点的资源代理,管理本机资源(CPU、内存)并执行任务。 |
ApplicationMaster(AM) | 任务协调者 | 每个应用程序独有的进程,负责向RM申请资源,并协调任务的执行与容错。 |
1. ResourceManager(RM)—— 集群资源的总调度官
作用:
-
资源分配:管理集群所有节点的资源(CPU、内存),根据调度策略(如CapacityScheduler、FairScheduler)分配给不同应用。
-
作业调度:接收客户端提交的作业,启动对应的ApplicationMaster(AM)。
-
容错监控:监控AM的运行状态,失败时重新分配资源。
关键点:
-
两个核心子组件:
-
Scheduler(调度器):纯资源分配器,不关心应用逻辑。
-
ApplicationsManager(应用管理器):负责AM的启动与生命周期管理。
-
-
单点故障问题:生产环境需通过 HA(高可用) 配置多个RM避免单点故障。
2. NodeManager(NM)—— 单个节点的资源管家
作用:
-
资源管理:监控本节点的资源使用情况(如CPU、内存、磁盘),定期向RM汇报。
-
任务执行:根据RM和AM的指令,启动/停止Container(资源容器),运行具体任务(如MapTask、Spark Executor)。
-
本地化优化:优先使用数据本地化(Data Locality)的Container,减少网络传输。
关键点:
-
每个从节点(DataNode)通常部署一个NM,与HDFS的DataNode共存。
-
若NM失效,RM会将该节点标记为不可用,并重新调度其上的任务。
3. ApplicationMaster(AM)—— 单个应用的指挥官
作用:
-
资源协商:向RM申请资源(Container),并协商资源需求(如“需要10个Container运行Map任务”)。
-
任务协调:与NM通信,在分配的Container中启动/监控任务(如MapReduce的MapTask或Spark的Executor)。
-
容错处理:任务失败时,重新申请资源或调整执行策略。
关键点:
-
每个应用一个AM:例如,一个MapReduce作业或一个Spark作业都有自己的AM。
-
轻量级设计:AM本身也是运行在Container中的进程,由RM动态分配资源启动。
三大组件协作流程(以MapReduce为例)
-
提交作业:客户端向RM提交MapReduce作业。
-
启动AM:RM分配一个Container,启动该作业的AM。
-
申请资源:AM向RM注册,并申请运行MapTask的Container资源。
-
分配资源:RM根据调度策略,通知NM启动Container。
-
执行任务:NM在Container中运行MapTask,AM监控任务状态。
-
作业完成:AM向RM注销,释放资源。
为什么需要YARN?
-
解耦资源与计算:在Hadoop 1.0中,MapReduce既负责计算又管理资源,导致扩展性差。YARN将资源管理抽象化,支持多计算框架(如Spark、Flink)。
-
提高集群利用率:允许多个应用共享集群资源,避免资源浪费。
总结:
-
RM 是集群的“大脑”,负责宏观资源调度。
-
NM 是“四肢”,负责单个节点的任务执行。
-
AM 是“项目经理”,为每个应用协调资源和任务。
通过这三者的协作,YARN实现了高效的分布式资源管理,成为Hadoop生态的基石。