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(公平调度器)

  • 公平调度器:支持多个队列,每个队列配置一定的资源,确保每个队列中的任务公平共享资源。任务优先级越高,分配到的资源也越多,确保每个任务都能获得足够的资源。
相关推荐
执笔诉情殇〆1 分钟前
springboot集成达梦数据库,取消MySQL数据库,解决问题和冲突
数据库·spring boot·mysql·达梦
不良手残7 分钟前
IDEA类和方法注释模板设置-保姆教程
java·开发语言
GoodStudyAndDayDayUp12 分钟前
调用海康API预览视频
java·海康
李迟17 分钟前
在Linux服务器上使用kvm创建虚拟机
java·linux·服务器
Dcs18 分钟前
6 个 PWA 高阶策略,助你提升用户留存与参与度
java
hdsoft_huge23 分钟前
Spring Boot 高并发框架实现方案:数字城市的奇妙之旅
java·spring boot·后端
软件技术NINI39 分钟前
springMvc的简单使用:要求在浏览器发起请求,由springMVC接受请求并响应,将个人简历信息展示到浏览器
数据库·mysql
就改了1 小时前
JUC小册——公平锁和非公平锁
java·开发语言
ThetaarSofVenice1 小时前
垃圾收集相关算法Test
java·jvm·算法
秉承初心1 小时前
将Maven依赖上传到Gitee Packages并让他人引用方案(AI)
java·gitee·maven