Hadoop三大组件之YARN(一)

news/2024/9/29 16:24:49 标签: hadoop, java, 大数据, 数据库, 数据仓库, 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(公平调度器)

  • 公平调度器:支持多个队列,每个队列配置一定的资源,确保每个队列中的任务公平共享资源。任务优先级越高,分配到的资源也越多,确保每个任务都能获得足够的资源。

http://www.niftyadmin.cn/n/5683343.html

相关文章

前端html+css+js 基础总结

​​​HTML 行级元素 标签分为行级元素与块级元素 行级元素占据区域由其显示内容决定&#xff0c;如span&#xff0c;img(图片)&#xff0c;<a></a>基本格式: <a href"链接" target"_blank"></a>用于跳转到其他网站&#xff0c…

深入理解 JSX:构建 React 用户界面的利器

目录 一、JSX介绍 1.JSX概念 2.为什么使用JSX,JSX有什么好处? 二、JSX基本语法 1.基本元素: 2.嵌套元素: 3.组件: 4.属性: 5.表达式 6.条件渲染: 7.样式: 三、JSX语法规则 四、JSX编译过程 五、JSX小案例 1.待办事项列表 2.计时器应用 六、总结 一、JSX介…

ECMAScript与JavaScript的区别:深入解析

在现代网页开发中&#xff0c;JavaScript 和 ECMAScript 是两个频繁提及的术语。尽管许多人将这两个概念视为同义词&#xff0c;但它们实际上有着重要的区别。本文将深入探讨这两者的定义、关系及其在编程中的应用。 1. 定义与背景 JavaScript JavaScript 是一种高层次的、解…

Python NumPy 数据清洗:高效处理数据异常与缺失

Python NumPy 数据清洗&#xff1a;高效处理数据异常与缺失 文章目录 Python NumPy 数据清洗&#xff1a;高效处理数据异常与缺失一 数据预处理的常见问题二 待处理的数据三 数据预处理四 清洗数据1 查看第一列学号2 查看第二列年龄结果解析函数解释1&#xff09;~np.isnan(dat…

【Linux】趣味讲解“权限“的那些事(重点讲解文件权限,内含su、sudo、chmod、chown、umask等指令)

文章目录 前言1. Linux下用户的分类1.1 su 指令1.1.1 使用su指令切换到其它的用户上1.1.2 使用su指令切换到root上1.1.3 su指令的总结 1.2 sudo指令(对某条指令进行提权)1.2.1 sudo指令的语法1.2.2 由sudo指令引发的思考问题 2. 什么叫做权限2.2 文件权限2.2.1 文件类型2.2.2 文…

JavaScript中的输出方式

1. console.log() console.log() 是开发者在调试代码时最常用的方法。它将信息打印到浏览器的控制台&#xff0c;使开发者能够查看变量的值、程序的执行状态以及其他有用的信息。 用途&#xff1a;用于调试和记录程序运行时的信息。优点&#xff1a;简单易用&#xff0c;适合…

Mac小白必看,快速帮助新手入门的五款软件

刚转MacOS的小白是不是还不知道如何选择软件&#xff0c;MacOS与win有着很大的区别&#xff0c;对于新手来说&#xff0c;想要快速上手Mac的使用&#xff0c;少不了一款好的软件工具&#xff0c;今天给大家推荐五款适合刚转Mac的小白使用的好用工具。 1. iShot&#xff1a;截图…

JavaScript、Node.js、nvm、npm 、Vue 之间的关系------类比后端开发中的Python,java,Ruby对照理解

Node.js、nvm、npm、JavaScript 和 Vue 之间的关系 JavaScript (JS) JavaScript 是一种广泛使用的编程语言&#xff0c;最初设计用于浏览器中的客户端脚本。现在它也被用于服务器端开发&#xff08;如 Node.js&#xff09;、移动应用开发&#xff08;如 React Native&#xff…