深入解析Apache Hadoop YARN:工作原理与核心组件

什么是YARN?

YARN(Yet Another Resource Negotiator)是Apache Hadoop生态系统中的一个重要组件,用于资源管理和作业调度。它是Hadoop 2.x版本中的一个关键特性,取代了旧版本中的JobTracker和TaskTracker。YARN的设计目标是使Hadoop能够处理更广泛的工作负载,包括批处理、交互式查询、流处理以及其他类型的工作负载。
在这里插入图片描述

为什么需要YARN?

YARN的引入解决了Hadoop 1.x版本中存在的一些限制和不足,提供了更灵活、更高效的资源管理和作业调度。以下是一些需要YARN的主要原因:
在这里插入图片描述

  • 多样化的工作负载支持:
    -Hadoop 1.x版本中的MapReduce框架适用于批处理作业,但不太适合处理交互式查询、流处理等多样化的工作负载。YARN的出现使得Hadoop可以同时运行多种类型的应用程序,包括批处理、交互式查询(如Apache Hive、Apache Tez)、流处理(如Apache Storm、Apache Flink)等。
  • 资源隔离和多租户支持:
    YARN支持在同一集群上运行多个应用程序,并能够对资源进行有效的隔离,防止一个应用程序的资源消耗影响其他应用程序的性能。这种多租户支持使得企业可以更高效地共享集群资源,并在不同的团队、部门或业务单位之间进行资源划分和管理。
  • 动态资源分配: YARN允许应用程序根据需要动态申请和释放资源,而不是像Hadoop 1.x版本那样静态地将资源分配给作业。这种动态资源分配机制可以提高集群资源的利用率,并更好地适应不同作业的资源需求变化。
  • 支持更大规模的集群:
    YARN的架构设计更适合处理大规模集群,能够有效地管理数千甚至数万个节点的资源和作业。这使得Hadoop可以在更大规模的数据集上进行处理和分析,满足日益增长的数据处理需求。
  • 更灵活的作业调度:
    YARN提供了灵活的作业调度框架,可以支持多种调度策略和调度器插件。这使得用户可以根据自己的需求选择最适合的调度器,并对调度策略进行定制,以满足不同作业的性能和资源需求。

YARN的基本核心思想

YARN的基本核心思想是将资源管理和作业调度从特定的计算框架(如MapReduce)中分离出来使其成为单独的守护进程,使得Hadoop集群能够更通用地支持多种类型的应用程序和工作负载。
这个想法是拥有一个全局的 ResourceManager ( RM ) 和每个应用程序的 ApplicationMaster ( AM )。应用程序可以是单个作业,也可以是作业的 DAG。ResourceManager 和 NodeManager 构成了数据计算框架。 ResourceManager是系统中所有应用程序之间资源仲裁的最终权威。 NodeManager 是每台机器的框架代理,负责容器、监视其资源使用情况(CPU、内存、磁盘、网络)并将其报告给ResourceManager/Scheduler。每个应用程序的 ApplicationMaster 实际上是一个特定于框架的库,其任务是与 ResourceManager 协商资源并与 NodeManager 一起执行和监视任务。
在这里插入图片描述

在Hadoop集群中,YARN主要有以下几个核心组件:

  1. ResourceManager(资源管理器):ResourceManager是YARN集群中的主节点,负责管理整个集群的资源分配和作业调度。它跟踪可用资源,并为提交到集群的应用程序分配资源。
  2. NodeManager(节点管理器):NodeManager运行在每个集群节点上,负责管理该节点上的资源,并与ResourceManager通信以报告节点的资源使用情况和可用性。
  3. ApplicationMaster(应用程序管理器):每个提交到YARN集群的应用程序都有一个对应的ApplicationMaster。ApplicationMaster负责与ResourceManager协商资源、监控作业进度,并向ResourceManager请求更多资源或报告作业完成情况。

ResourceManager 有两个主要组件:Scheduler 和ApplicationsManager。
调度程序负责将资源分配给受熟悉的容量、队列等约束的各种正在运行的应用程序。调度程序是纯粹的调度程序,因为它不执行应用程序状态的监视或跟踪。此外,它不保证重新启动由于应用程序故障或硬件故障而失败的任务。 Scheduler根据应用程序的资源需求执行其调度功能;它是基于资源容器的抽象概念来实现的,资源容器包含内存、CPU、磁盘、网络等元素。

调度程序具有可插入策略,负责在各种队列、应用程序等之间划分集群资源。当前的调度程序(例如CapacityScheduler和FairScheduler)就是插件的一些示例。

ApplicationsManager 负责接受作业提交、协商第一个容器来执行应用程序特定的 ApplicationMaster 并提供在失败时重新启动 ApplicationMaster 容器的服务。每个应用程序的 ApplicationMaster 负责与 Scheduler 协商适当的资源容器,跟踪其状态并监控进度。

hadoop-2.x 中的 MapReduce 保持了与之前稳定版本 (hadoop-1.x) 的API 兼容性。这意味着所有 MapReduce 作业仍应在 YARN 之上运行,只需重新编译即可。

YARN通过ReservationSystem支持资源预留的概念,ReservationSystem 是一个组件,允许用户指定随时间和时间限制(例如截止日期)的资源配置文件,并预留资源以确保重要作业的可预测执行。ReservationSystem跟踪资源随着时间的推移,对预留进行准入控制,并动态指示底层调度程序以确保预留得到满足。

为了将 YARN 扩展至数千个节点以上,YARN通过YARN Federation功能支持联合概念。联合允许透明地将多个纱线(子)集群连接在一起,并使它们显示为单个大型集群。这可用于实现更大的规模,和/或允许多个独立集群一起用于非常大的作业,或用于具有跨所有集群的容量的租户。

在 YARN 上运行的应用程序

以上并非所有的应用

  • 批处理应用程序:
    批处理作业是Hadoop最常见的用例之一,它们通常涉及对大规模数据集进行分析和处理。使用YARN,批处理作业可以通过MapReduce框架或其他批处理引擎(如Apache Spark、Apache Flink等)来运行。
  • 交互式查询:
    交互式查询通常用于对数据进行即席查询和分析。通过YARN,可以在集群上运行诸如Apache Hive、Apache Impala、Apache Drill等交互式查询引擎,这些引擎能够实时响应用户的查询请求。
  • 流处理应用程序:
    流处理应用程序用于对实时数据流进行处理和分析。通过YARN,可以在集群上运行流处理引擎,如Apache Storm、Apache Flink、Apache Kafka Streams等,以实时处理数据流并生成相应的输出。
  • 机器学习和数据挖掘:
    YARN也可以支持运行机器学习和数据挖掘算法。例如,可以使用Apache Spark的机器学习库(MLlib)或Apache Flink的机器学习库来在集群上训练和部署机器学习模型。
  • 图计算:
    图计算应用程序用于在图结构数据上执行复杂的分析和计算。通过YARN,可以在集群上运行图计算引擎,如Apache Giraph、Apache Spark GraphX等,来处理大规模的图数据。
  • 其他类型的应用程序:
    此外,YARN还可以支持各种其他类型的应用程序,包括ETL(Extract-Transform-Load)作业、数据流处理、实时分析等。YARN的通用性和灵活性使得它能够满足不同类型应用程序的运行需求。

应用程序如何在 YARN 上运行?

在这里插入图片描述

  1. 应用程序提交:
    用户通过YARN客户端提交应用程序。在提交过程中,用户需要指定应用程序的资源需求、启动命令、应用程序类型等信息。通常,应用程序的启动命令会包括指定应用程序的jar包或可执行文件、主类名(对于Java应用程序)、应用程序的输入和输出路径等信息。
  2. ResourceManager分配资源:
    ResourceManager接收到用户提交的应用程序后,会根据应用程序的资源需求和集群中的资源情况进行资源分配。ResourceManager会为应用程序分配所需的计算资源(如CPU和内存资源)以及其他必要的资源(如网络带宽)。
  3. NodeManager启动容器:
    一旦资源分配完成,ResourceManager会通知集群中相应的NodeManager,在相应的节点上启动一个或多个容器(Container)。容器是YARN中的基本执行单位,它包含了运行应用程序所需的计算资源、环境变量等信息。
  4. 应用程序启动:
    一旦容器启动完成,应用程序的启动命令将被执行。这可能涉及启动应用程序的主进程,例如执行Java的main()方法或运行可执行文件。
  5. ApplicationMaster启动:
    应用程序的启动过程通常会涉及到一个特殊的组件,称为ApplicationMaster。ApplicationMaster负责与ResourceManager通信,协商资源、监控作业进度,并向ResourceManager请求更多资源或报告作业完成情况。ApplicationMaster运行在集群中的一个容器中,并由ResourceManager负责启动和监控。
  6. 作业执行:一旦ApplicationMaster启动,应用程序就可以开始在容器中执行。根据应用程序的类型和逻辑,它可能会涉及到数据的读取、处理、计算以及生成结果等过程。
  7. 作业完成:
    一旦应用程序执行完成,ApplicationMaster会向ResourceManager报告作业完成情况,并请求释放所占用的资源。
  8. 资源释放
    ResourceManager会相应地释放容器所占用的资源,并通知NodeManager停止相应的容器。至此,应用程序的执行过程结束,集群资源被释放,可以被其他应用程序使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蚂蚁云科技集团应用研究院院长李亚锋先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 蚂蚁云科技集团应用研究院院长李亚锋先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“探索AI技术对项目管理发展的影响”。大会将于5月25-26日在北京举办,敬请关注! 议题简要: 19…

CSS的语法规则——基础选择器

元素&#xff1a; 用法&#xff1a; 标签名&#xff1a;{style的内容} 特点&#xff1a; 全局性&#xff0c;使用后&#xff0c;所有的相同标签都是同一种样式。 举例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UT…

双目人体姿态匹配 | 基于双目视觉的人体姿态匹配+识别算法实现

项目应用场景 面向双目立体视觉的人体姿态匹配场景&#xff0c;项目采用 Visual Studio C 开发&#xff0c;具有人体姿态匹配 人体姿态识别能力。 项目效果 项目细节 > 具体参见项目 README.md项目获取 https://download.csdn.net/download/weixin_42405819/89113399

怎么找平台?伦敦金交易平台查询

在过去的一个星期里&#xff0c;伦敦金价格再创辉煌&#xff0c;一举突破2400大关&#xff0c;并且将历史新高刷新至2431。虽然随后金价出现较大幅度的下跌&#xff0c;但对多数投资者而言&#xff0c;这不是下跌而是回调。回调之后&#xff0c;伦敦金的涨势将继续。既然有这么…

neo4j使用详解(终章、neo4j的java driver使用模板及工具类——<可用于生产>)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1. 简介 本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括: 图…

我三战华东师范大学的同桌真的很牛

标题党一下&#xff0c;其实是我的一个关系很好的高中同桌死磕华东师范大学三年&#xff0c;最终第二名上岸的故事。 其实我们是同一届的&#xff0c;我为了早点走选择了个排名还行的双非院校就走了&#xff0c;而我这个同桌相当有毅力&#xff0c;他能坚持这么久我其实很佩服&…

微信小程序开发一(常用的标签)

去微信公众平台注册账号确定怎么操作去网上找找 网址&#xff1a;微信公众平台 (qq.com)https://mp.weixin.qq.com/https://mp.weixin.qq.com/ 微信开放文档中找到工具栏下载微信开发者工具 网址&#xff1a;微信开发者工具&#xff08;稳定版 Stable Build&#xff09;下载地…

JavaWeb开发02-MYSQL-DDL-DML-DQL-多表设计-多表查询-事务-索引

一、MySQL概述 通过SQL语句可以操作数据库 关系型数据库&#xff1a; 只要是关系型数据库就可以用SQL语句这一统一标准进行操作数据库 1.MYSQL数据模型 客户端通过SQL语句交给了数据库管理系统DBMS&#xff0c;进行相应操作&#xff0c;创建一个一个数据库&#xff0c;体现为一…

如何理解信创产品?成为信创产品?

信创产品是指运用信息技术手段创造的产品&#xff0c;它是数据安全、网络安全的基础&#xff0c;也是新基建的重要组成部分。信创产品包括了IT基础设施如CPU芯片、服务器、存储、交换机、路由器、各种云和相关服务内容&#xff1b;基础软件如数据库、操作系统、中间件&#xff…

JRT在线初始化完善

之前实现的在线初始化留了个尾巴&#xff0c;那就是环境下载页构造zip包的时候没修改JRTBrowser的连接串地址为当前网站&#xff0c;这样就要求网站部署好之后给用户下载之前有人要把服务器的浏览器地址配置好。这样就增加一个运维工作&#xff0c;如果忘了或者不知道的人就会导…

nuxt3使用记录四:加载静态资源时路径的写法研究

在上一篇记录了NUXT进行SSG构建时&#xff0c;不仅会构建纯静态的html文件&#xff0c;也会构建一堆js文件。而如果网页中有加载静态资源&#xff0c;如图片&#xff0c;这时就需要注意了&#xff0c;不能简单的使用官网说的<img src"~/assets/img/nuxt.png" alt&…

Linux进阶---常见符号及其含义、常见报错

一、常见符号及其含义&#xff08;重要&#xff09; 二、 常见报错 • 找不到文件、文件不存在&#xff1a;No such file or directory • 没有权限 &#xff1a;Permission denied • 命令不存在 &#xff1a;command not found 1.找不到文件、文件不存在&#xff1a;No s…

AI智能电销机器人是什么?能给我们带来哪些便利?

科技的飞速发展&#xff0c;让很多“懒人”的幻想变成了现实&#xff0c;越来越多的人工智能产品被发明出来甚至完全替代日常生活中的工作。比如在电销行业&#xff0c;很多企业选择AI智能电销机器人进行外呼。那么你了解多少AI智能电销机器人呢&#xff1f;和小编kelaile520一…

声明v.s.定义

参考&#xff1a;http://t.csdnimg.cn/1xnzA 变量的定义&#xff1a;用于为变量分配存储空间&#xff0c;还可以为变量指定初始值&#xff0c;在程序中&#xff0c;变量有且仅有一个定义。变量的声明&#xff1a;用于向程序表明变量的类型和名字。在程序中&#xff0c;变量可以…

SAP SD学习笔记06 - 受注的据否,受注的理由,简易变更(一括处理)

上文讲了一括处理和Block&#xff08;冻结&#xff09;处理。 SAP SD学习笔记05 - SD中的一括处理&#xff08;集中处理&#xff09;&#xff0c;出荷和请求的冻结&#xff08;替代实现承认功能&#xff09;-CSDN博客 本章继续讲SAP的流程中一些常用的操作。 1&#xff0c;受注…

Flume 入门教程

内容目录 Flume 简介 架构和基本概念 多种架构模式 Flume 安装部署 Flume 简介 Flume 是一个分布式、可靠且高可用的数据收集、聚合和传输系统&#xff0c;主要用于高效地处理大规模日志数据。设计之初&#xff0c;它主要服务于日志管理领域&#xff0c;但其灵活性和可扩展…

语言的未来:深度学习在自然语言处理中的革命

语言的未来&#xff1a;深度学习在自然语言处理中的革命 1 引言 自古以来&#xff0c;语言就是人类表达思想、传递信息、进行社会互动的基石。语言的复杂性既体现在其变化多端的语义、句法和语用层面&#xff0c;同时也反映在人类如何理解和产生自然语言的深奥之中。在这一节中…

009、Python+fastapi,第一个后台管理项目走向第9步:ubutun 20.04下安装vscode+git环境配置

一、说明 git是一定要配置的&#xff0c;由于是白嫖的无影云电脑&#xff0c;东西得保存在网上&#xff0c;就继续白嫖gitee吧&#xff0c;显然国内github是不太合适的了 二、安装git 直接安装sudo apt install -y git git --version git version 2.25.1 三、配置git 在git上…

OSPF星型拓扑和MGRE全连改

一&#xff0c;拓扑 二&#xff0c;要求 1&#xff0c;R6为ISP只能配置IP地址&#xff0c;R1-R5的环回为私有网段 2&#xff0c;R1/4/5为全连的MGRE结构&#xff0c;R1/2/3为星型的拓扑结构&#xff0c; 3&#xff0c;R1为中心站点所有私有网段可以互相通讯&#xff0c;私有网段…

Spring AI,调用OpenAI大模型接口,让ChatGPT给你讲笑话

前言 Spring最近刚刚推出了SpringAI&#xff0c;封装了AI大模型接口的使用。本文将参考Spring官网案例&#xff0c;一步步教你如何调用OpenAI的接口&#xff0c;让ChatGPT接口返回一个笑话。 前提条件 请下载并安装好JDK17或更新的版本&#xff0c;本文使用的是JDK21。JDK下…