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

  • 公平调度器:支持多个队列,每个队列配置一定的资源,确保每个队列中的任务公平共享资源。任务优先级越高,分配到的资源也越多,确保每个任务都能获得足够的资源。
相关推荐
zhulin10287 分钟前
springboot+大数据+数据挖掘+基于数据挖掘技术的线上招聘信息分析系统【内含源码+文档+部署教程
大数据·hive·hadoop·spring boot·数据挖掘·毕业设计·毕设
Wang's Blog20 分钟前
Redis: Sentinel哨兵监控架构及环境搭建
数据库·redis·架构
黄尚圈圈22 分钟前
Maven超详细教程(三):Maven依赖查找顺序
java·前端·maven
Francek Chen31 分钟前
【智能大数据分析 | 实验二】Spark实验:部署Spark集群
大数据·hadoop·分布式·数据挖掘·数据分析·spark
always202232 分钟前
Gin框架简易搭建(3)--Grom与数据库
数据库·go·gin
何中应37 分钟前
新版IDEA中Git的使用(四)——解决冲突
java·git·intellij-idea
蒙娜丽宁1 小时前
华为仓颉语言入门(7):深入理解 do-while 循环及其应用
java·数据库·华为·仓颉
LittleMagics1 小时前
StarRocks Elasticsearch Catalog原理简析
大数据·elasticsearch·搜索引擎·全文检索
Data 3171 小时前
Hive数仓操作(八)
大数据·数据库·数据仓库·hive·hadoop
隔着天花板看星星1 小时前
SparkSQL-性能调优
大数据·分布式·sql·spark·scala