Hadoop YARN

news/2024/5/20 3:39:54 标签: hadoop, 大数据, hdfs

目录

    • Hadoop YARN介绍
    • Hadoop YARN架构、组件
    • 程序提交YARN交互流程
    • YARN资源调度器Scheduler
      • 调度器策略
      • FIFO Scheduler
      • Capacity Scheduler
      • Fair Scheduler

Hadoop YARN介绍

YARN是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度
在这里插入图片描述
上图:
HDFS底层资源存储
YARN 资源管理与调度
上面除了MR,还有Tez、HBase、Spark等,即YARN除了支持MP还支持其他的,通用性

YARN功能说明:

  • 资源管理系统:集群的硬件资源,和程序运行相关,比如内存、CPU等。
  • 调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)。
  • 通用:不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。

YARN概述:

  • 可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、CPU等)。
  • Hadoop能有今天这个地位,YARN可以说是功不可没。因为有了YARN ,更多计算框架可以接入到 HDFS中,而不单单是 MapReduce,正是因为YARN的包容,使得其他计算框架能专注于计算性能的提升。
  • HDFS可能不是最优秀的大数据存储系统,但却是应用最广泛的大数据存储系统, YARN功不可没。
    因为其他应用都可以因为YARN来读取存储在HDFS上的数据

Hadoop YARN架构、组件

在这里插入图片描述
ResourceManager老大+3个小弟NodeManager —属于集群物理层面
ApplicationMaster(App Mstr)—属于APP层面
上面三个,是YARN三大组件
还有两个:
Client客户端、Container容器(资源的抽象)

YARN3大组件:

  • ResourceManager(RM)
    YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。
    接收用户的作业提交,并通过NM分配、管理各个机器上的计算资源。
  • NodeManager(NM)
    YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。
    根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况
  • ApplicationMaster(AM) 物理上不存在,跟着应用程序出现
    用户提交的每个应用程序均包含一个AM。
    应用程序内的“老大”,负责程序内部各阶段的资源申请,监督程序的执行情况
    一个程序运行的时候,MAP阶段申请几个容器,执行到了百分之几等等都在AM来管理

程序提交YARN交互流程

以MR为例,4个主要的交互流程:

  1. MR作业提交 Client–>RM
  2. 资源的申请 MrAppMaster–>RM
  3. MR作业状态汇报 Container(Map|Reduce Task)–>Container(MrAppMaster)
  4. 节点的状态汇报 NM–>RM

当用户向 YARN 中提交一个应用程序后, YARN将分两个阶段运行该应用程序 。

  • 第一个阶段是客户端申请资源启动运行本次程序的ApplicationMaster
  • 第二个阶段是由ApplicationMaster根据本次程序内部具体情况,为它申请资源,并监控它的整个运行过程,直到运行完成

MR提交YARN交互流程:

  • 第1步、用户通过客户端向YARN中ResourceManager提交应用程序(比如hadoop jar提交MR程序);只有先把AM启动成功了,才能后续的。
  • 第2步、ResourceManager为该应用程序分配第一个Container(容器),并与对应的NodeManager通信,要求它在这个Container中启动这个应用程序的ApplicationMaster
  • 第3步、ApplicationMaster启动成功之后,首先向ResourceManager注册并保持通信,这样用户可以直接通过ResourceManage查看应用程序的运行状态(处理了百分之几);
  • 第4步、AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态;
  • 第5步、一旦 ApplicationMaster 申请到资源后,便与对应的 NodeManager 通信,要求它启动任务
  • 第6步、NodeManager 为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务
  • 第7步、各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC 向 ApplicationMaster 查询应用程序的当前运行状态。
  • 第8步、应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己
    在这里插入图片描述

YARN资源调度器Scheduler

在这里插入图片描述
Scheduler,是ResourceManager的核心组件之一.。即核心老大还是RM

调度器策略

三种调度器:
FIFO Scheduler(先进先出调度器)、Capacity Scheduler(容量调度器)、Fair Scheduler(公平调度器)。

  • Apache版本YARN默认使用Capacity Scheduler。
  • 如果需要使用其他的调度器,可以在yarn-site.xml中的yarn.resourcemanager.scheduler.class进行配置

FIFO Scheduler

先进先出的思想,即先提交的应用先运行
调度工作不考虑优先级和范围,适用于负载较低的小规模集群。当使用大型共享集群时,它的效率较低且会导致一些问题。

  • 优势:无需配置、先到先得、易于执行
  • 劣势:任务的优先级不会变高,因此高优先级的作业需要等待

Capacity Scheduler

该策略允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力。
通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了
Capacity Scheduler调度器以队列为单位划分资源。不同队列有独立的资源,队列的结构和资源是可以进行配置的

  • 优势:层次化的队列设计、容量保证、安全、弹性分配

Fair Scheduler

Fair Scheduler叫做公平调度,提供了YARN应用程序公平地共享大型集群中资源的另一种方式。使所有应用在平均情况下随着时间的流逝可以获得相等的资源份额

公平调度可以在多个队列间工作,允许资源共享和抢占。

用户之间的公平,不是程序之间的公平

  1. 有两个用户A和B,每个用户都有自己的队列。A启动一个作业,由于没有B的需求,它分配了集群所有可用的资源。
  2. 然后B在A的作业仍在运行时启动了一个作业,经过一段时间,A,B各自作业都使用了一半的资源。
  3. 现在,如果B用户在第一个作业运行时开始第二个作业,它将与B的另一个作业共享其资源,因此B的每个作业将拥有资源的四分之一,而A的继续将拥有一半的资源。结果是资源在用户之间公平地共享。

特点:

  • 分层队列:队列可以按层次结构排列以划分资源,并可以配置权重以按特定比例共享集群。
  • 资源抢占:根据应用的配置,抢占和分配资源可以是友好的或是强制的。默认不启用资源抢占。
  • 允许资源共享:即当一个应用运行时,如果其它队列没有任务执行,则可以使用其它队列,当其它队列有应用需要资源时再将占用的队列释放出来。所有的应用都从资源队列中分配资源。

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

相关文章

Random(一)高并发问题,ThreadLocalRandom源码解析

目录1.什么是伪随机数?2.Random2.1 使用示例2.2 什么种子重复,随机数会重复?2.3 nextInt() 源码分析2.4 线程安全的实现2.5 高并发问题3.ThreadLocalRandom3.1 使用示例3.2 current() 源码解析3.2.1 Thread中保存的变量:3.2.2 Thr…

RV1126笔记三十二:基于 FastDeploy 在 RV1126 上的部署示例(RV1126 上部署 YOLOv5 检测模型测试)

若该文为原创文章,转载请注明原文出处。 FastDeploy是一款全场景、易用灵活、极致高效的AI推理部署工具, 支持云边端部署。提供超过 🔥160+ Text,Vision, Speech和跨模态模型📦开箱即用的部署体验,并实现🔚端到端的推理性能优化。包括 物体检测、字符识别(OCR)、…

Vue2 组件基础使用、父子组件之间的传值

一、什么是组件如画红框的这些区域都是由vue里的各种组件组成、提高复用信通常一个应用会以一棵嵌套的组件树的形式来组织:例如,你可能会有页头、侧边栏、内容区等组件,每个组件又包含了其它的像导航链接、博文之类的组件。为了能在模板中使用…

shell脚本入门

实习的时候第一个月的考核就是如何部署一个云资源,当时走的捷径(杠杠的搜索能力hhhh)找到了一个shell脚本一键部署,后来被leader问起来就如实说了,leader问有没有看懂shell脚本中的逻辑……(没有&#xff0…

echo命令

这是一条内置命令。 输出指定的字符串 一、语法 echo [选项] [参数] 二、选项 -e:激活转义字符。 使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a 发出警告声; \b 删…

3.2 网站图的爬取路径

深度优先与广度优先方法都是遍历树的一种方法,但是网站的各个网页 之间的关系未必是树的结构,它们可能组成一个复杂的图形结构,即有回路。如果在前面的网站中每个网页都加一条Home的语句,让每个网页都能回到主界面,那么…

vue中render函数的作用和参数(vue2中render函数用法)

render 函数是 Vue2.x 新增的一个函数、主要用来提升节点的性能,它是基于 JavaScript 计算。使用 Render 函数将 Template 里面的节点解析成虚拟的 Dom 。Vue 推荐在绝大多数情况下使用模板来创建 HTML。然而在一些场景中,需要 JavaScript 的完全编程能力…

C语言学习及复习笔记-【14】C文件读写

14 C文件读写 14.1打开文件 您可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE包含了所有用来控制流的必要的信息。下面是这个函数调用的原型: FILE *fopen( const char…