首页 > 其他分享 >YARN

YARN

时间:2023-10-10 16:46:23浏览次数:32  
标签:队列 调度 应用程序 YARN Scheduler 资源

YARN基础

 

概述

  • 可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、CPU等)。

  • Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器。

  • YARN是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。

  • 它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处
     

功能

  • 资源管理系统:集群的硬件资源,和程序运行相关,比如内存、CPU等。

  • 调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)。

  • 通用:不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。
     

架构图


 

三大组件

ResourceManager(RM)

YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。 接收用户的作业提交,并通过NM分配、管理各个机器上的计算资源。

NodeManager(NM)

YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。 根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM。 应用程序内的“老大”,负责程序内部各阶段的资源申请,监督程序的执行情况
 

核心交互流程

  • MR作业提交 Client-->RM

  • 资源的申请 MrAppMaster-->RM

  • MR作业状态汇报 Container(Map|Reduce Task)-->Container(MrAppMaster)

  • 节点的状态汇报 NM-->R
     

MR提交YARN交互流程

  1. 用户通过客户端向YARN中ResourceManager提交应用程序(比如hadoop jar提交MR程序);

  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

 

资源调度理解

  • 在理想情况下,应用程序提出的请求将立即得到YARN批准。但是实际中,资源是有限的,并且在繁忙的群集上,应用程序通常将需要等待其某些请求得到满足。YARN调度程序的工作是根据一些定义的策略为应用程序分配资源。

  • 在YARN中,负责给应用分配资源的就是Scheduler,它是ResourceManager的核心组件之一。Scheduler完全专用于调度作业,它无法跟踪应用程序的状态。

  • 一般而言,调度是一个难题,并且没有一个“最佳”策略,为此,YARN提供了多种调度器和可配置的策略供选择
     

调度器策略

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

  • Apache 版本YARN默认使用Capacity Scheduler。

  • 如果需要使用其他的调度器,可以在yarn-site.xml中的yarn.resourcemanager.scheduler.class进行
     

FIFO Scheduler概述

  • FIFO Scheduler是Hadoop1.x中JobTracker原有的调度器实现,此调度器在YARN中保留了下来。

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

  • FIFO Scheduler拥有一个控制全局的队列queue,默认queue名称为default,该调度器会获取当前集群上所有的资源信息作用于这个全局的queue


 

FIFO Scheduler优势、坏处

  • 优势: 无需配置、先到先得、易于执行

  • 坏处: 任务的优先级不会变高,因此高优先级的作业需要等待,不适合共享集群
     

Capacity Scheduler概述

  • Capacity Scheduler容量调度是Apache Hadoop3.x默认调度策略。该策略允许多个组织共享整个集群资源,每个组织可以获得集群的一部分计算能力。通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源,这样整个集群就可以通过设置多个队列的方式给多个组织提供服务了。

  • Capacity可以理解成一个个的资源队列,这个资源队列是用户自己去分配的。队列内部又可以垂直划分,这样一个组织内部的多个成员就可以共享这个队列资源了,在一个队列内部,资源的调度是采用的是先进先出(FIFO)策略。
     

Capacity Scheduler特性优势

  • 层次化的队列设计(Hierarchical Queues) 层次化的管理,可以更容易、更合理分配和限制资源的使用。

  • 容量保证(Capacity Guarantees) 每个队列上都可以设置一个资源的占比,保证每个队列都不会占用整个集群的资源。

  • 安全(Security) 每个队列有严格的访问控制。用户只能向自己的队列里面提交任务,而且不能修改或者访问其他队列的任务。

  • 弹性分配(Elasticity) 空闲的资源可以被分配给任何队列。 当多个队列出现争用的时候,则会按照权重比例进行平衡

Fair Scheduler概述

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

  • Fair Scheduler设计目标是为所有的应用分配公平的资源(对公平的定义通过参数来设置)。

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

标签:队列,调度,应用程序,YARN,Scheduler,资源
From: https://www.cnblogs.com/ly003/p/17754546.html

相关文章

  • npm ,yarn 更换使用国内镜像源,阿里源,清华大学源
    目录背景Nnpm,yarn常用命令常用命令:yarn安装:npm,yarn使用国内源原淘宝npm域名即将停止解析!!使用老域名的请尽快更新到新域名!yarn配置源:临时使用全局配置npm配置源:背景在平时开发当中,我们经常会使用Npm,yarn来构建web项目。但是npm默认的源的服务器是在国外的,如果没有梯子......
  • yarn
    通过npm安装:npminstall-gyarn查看yarn版本:yarn-v查看镜像源:yarnconfiggetregistry设置为淘宝镜像源:https://m.50zw.co/book/142423/51366433_2.html......
  • 【大数据】MapReduce与YARN 介绍与配置
    MapReduce架构MapReduce是一种分布式计算模型,用于处理大规模数据集。它将数据分成小块,分配给集群中的节点进行处理。Map阶段处理数据并生成键值对,Shuffle阶段将相同键的值对传输到同一节点进行排序和分组,Reduce阶段对每组键值对执行操作并生成结果。整个过程由Master节点协......
  • 包管理工具-yarn的特别礼物
    yarn的特别礼物在终端命令上,yarn不仅仅是对npm的命令做了一个改名,还增加了一些原本没有的命令,这些命令在某些时候使用起来非常方便yarncheck使用yarncheck命令,可以验证package.json文件的依赖记录和lock文件是否一致这对于防止篡改非常有用yarnaudit使用yarnaudit......
  • 包管理工具 - yarn 的核心命令
    yarn的核心命令初始化初始化:yarninit[--yes/-y]安装添加指定包:yarn[global]addpackage-name[--dev/-D][--exact/-E]安装package.json中的所有依赖:yarninstall[--production/--prod]脚本和本地CLI运行脚本:yarnrun脚本名start、stop、test可以省略run......
  • 包管理工具-Yarn
    yarn简介yarn官网:https://www.yarnpkg.com/zh-Hans/yarn是由Facebook、Google、Exponent和Tilde联合推出了一个新的JS包管理工具,它仍然使用npm的registry,不过提供了全新CLI来对包进行管理过去,yarn的出现极大的抢夺了npm的市场,甚至有人戏言,npm只剩下一个regi......
  • Flink的部署模式:Local模式、Standalone模式、Flink On Yarn模式
    Flink部署、执行模式Flink的部署模式Local本地模式、Standalone模式和FlinkonYARN模式是Flink的三种常见部署模式。1.Local本地模式:在本地模式下,Flink以单机模式运行,无需启动分布式资源管理器。这种模式适用于本地开发和测试,用于验证Flink代码的正确性和性能。2.Standalon......
  • 【Yarn】Yarn 命令详解
    https://blog.csdn.net/qq_21383435/article/details/108719953https://www.jianshu.com/p/175a4d0cda44......
  • yarn 出现 【 info There appears to be trouble with your network connection. Retr
    第一种解决方案#调整为taobao镜像源yarnconfigsetregistryhttps://registry.npm.taobao.org我用了没用,可以试试第二种解决方案要在项目根目录下创建后缀名为.yarnrc的文件,并设置network-timeout的值为600000,你可以按照以下步骤进行操作:打开文本编辑器,例如Note......
  • yarn install error node-sass: Command failed.
    运行yarninstall报错,如下图:运行npminstall也报错,如下图:如果发生上诉的错误,建议优先考虑是node.js的版本问题我的node.js版本是16,卸载16,安装14版本,运行不再报错......