Hadoop三大组件之YARN(一)

YARN架构与任务提交流程详解

1. YARN的组成架构

YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的一个重要组成部分,主要用于资源管理和调度。YARN的架构主要由以下几个关键组件构成:

1.1 ResourceManager(RM)

ResourceManager是YARN的核心组件,负责整个集群的资源管理和调度。其主要职责包括:

  • 资源调度:接收来自客户端程序提交的请求,根据资源需求分配容器(Container)。
  • 监控集群资源使用情况:实时监控集群中资源的使用状态。
  • 主要子组件
    • 调度器(Scheduler):根据资源需求和调度策略分配Container。
    • 应用程序管理器(ApplicationManager):负责管理应用程序的生命周期,从启动到完成的全过程。

1.2 NodeManager(NM)

NodeManager负责单个节点上的资源管理。每个节点上运行一个NodeManager,主要功能包括:

  • 资源管理:管理该节点上的所有资源,处理来自ResourceManager和ApplicationMaster的命令。
  • 监控Container:监控Container的资源使用情况,并定期向ResourceManager发送心跳信号,以报告资源状态。
1.2.1 ApplicationMaster(AM)

每个应用程序都有一个独立的ApplicationMaster,负责:

  • 与ResourceManager通信:协调应用程序的资源请求和任务执行。
  • 资源申请:向ResourceManager申请运行任务所需的Container。
1.2.2 Container

Container是YARN中任务运行的基本单位,主要特点包括:

  • 资源封装:封装了CPU、内存等资源概念。
  • 任务执行:RM将资源分配给ApplicationMaster后,创建Container来运行应用程序的任务。

2. YARN的任务提交流程

YARN的任务提交流程主要分为以下几个步骤:

2.1 提交作业

用户通过客户端向ResourceManager提交作业,包括应用程序代码和所需资源的定义。

2.2 资源请求

ResourceManager收到作业提交请求后,分配一个初始Container来启动ApplicationMaster。

2.3 启动ApplicationMaster

ApplicationMaster在分配的Container中启动,并向ResourceManager进行注册,确认其身份。

2.4 申请资源

ApplicationMaster根据任务需求向ResourceManager申请更多运行任务所需的Container。

2.5 分配资源

ResourceManager根据集群的资源情况,分配所需的Container,并通知ApplicationMaster。

2.6 启动任务

ApplicationMaster与NodeManager进行通信,启动任务Container。

2.7 任务执行

任务在分配的Container中执行,完成后将结果反馈给ApplicationMaster。

2.8 作业完成

ApplicationMaster向ResourceManager报告作业完成,并释放资源,确保资源的高效利用。

3. YARN调度器

YARN的调度器是资源分配的核心,根据不同的需求提供多种调度策略:

3.1 FIFO调度器

  • 先进先出:所有提交的作业在一个队列中进行服务,按照提交的顺序来运行,先来先服务。

3.2 Capacity Scheduler

  • 容量调度器:将整个集群的资源划分为多个队列,每个队列之间的资源互不干扰。支持生产和开发环境的划分,可以在每个队列内部使用FIFO调度策略。

3.3 Fair Scheduler(公平调度器)

  • 公平调度器:支持多个队列,每个队列配置一定的资源,确保每个队列中的任务公平共享资源。任务优先级越高,分配到的资源也越多,确保每个任务都能获得足够的资源。
相关推荐
大巨头4 分钟前
sql2008 数据库分页语句
数据库
sino爱学习4 分钟前
高性能线程池实践:Dubbo EagerThreadPool 设计与应用
java·后端
m0_715575345 分钟前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
LaughingZhu24 分钟前
Product Hunt 每日热榜 | 2026-02-08
大数据·人工智能·经验分享·搜索引擎·产品运营
老邓计算机毕设35 分钟前
SSM智慧社区家政服务系统80q7o(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架
风生u37 分钟前
activiti7 详解
java
岁岁种桃花儿1 小时前
SpringCloud从入门到上天:Nacos做微服务注册中心(二)
java·spring cloud·微服务
Word码1 小时前
[C++语法] 继承 (用法详解)
java·jvm·c++
TT哇1 小时前
【实习 】银行经理端两个核心功能的开发与修复(银行经理绑定逻辑修复和线下领取扫码功能开发)
java·vue.js
逝水如流年轻往返染尘1 小时前
Java中的数组
java