【大数据2025】Yarn 总结

news2025/1/20 8:07:47

分布式资源管理系统讲解总结

一、引言

  • 围绕分布式资源管理系统展开,重点涵盖 Yarn 的简介、原理、资源调度策略以及运维和管理,旨在让学员全面掌握相关知识。
  • Yet Another Resource Negotiator

二、Yarn 诞生背景

  • 在 Hadoop 1.X 中仅有 HDFS 和 MapReduce 两个框架,HDFS 负责存储,MapReduce 兼具计算与资源管理双重职能,负责将计算任务调度到 HDFS 数据存储节点。

三、MapReduce 架构及问题 (Hadoop 1.x)

在这里插入图片描述

  • 架构:采用主从架构,主节点为 job tracker,从节点是 task tracker。客户端向 job tracker 提交作业请求,job tracker 在数据节点申请 CPU 和内存等资源,作业在申请到的资源中运算,并向 job tracker 汇报,任务完成后释放资源。
  • 问题
    • 单点故障率高:job tracker 管理任务繁重,既要管理资源分配又要管理作业,任务量大时易超负荷挂掉,且无高可用机制,一旦挂掉整个集群瘫痪。
    • 资源描述模型简单:仅依据 task 数量分配固定资源,未考虑 CPU 和内存实际需求,导致资源浪费和任务运行效率低下,并且强制拆分资源为 map 和 reduce,无法兼容其他计算框架,通用性差。

四、Yarn 介绍及解决问题方式

  • Yarn 是分布式通用资源管理系统,处于通用计算和数据存储中间位置。
  • 解决了 MapReduce 的问题,使资源调度更精细且通用性增强,可调度多种计算框架作业到 HDFS 运行,同时对 MapReduce 单点故障率高的问题也有相应解决措施(后续内容应会提及具体架构优化方式)。

在这里插入图片描述


在这里插入图片描述

主从架构

  • 架构组成:主节点为 resource manager,负责资源管理;从节点是 node manager,所有 node manager 地位平等,无层级管理关系。
  • 单点故障解决方案:采用热备节点(stand by),当活跃主节点(active)故障时,热备节点可接替工作,减轻单点故障风险,但未完全解决问题。进一步通过将作业管控工作从主节点分离来分散压力。

作业管理机制

在这里插入图片描述

  • 作业提交与资源分配:客户端向 resource manager 提交作业,后者在 node manager 中为作业分配资源(包括 CPU、内存、环境变量等),并分装到 container 中。首次提交作业通常分配一个 container 用于运行作业的管理进程 application master
  • 作业解析与资源再申请:application master 运行后解析作业,若需更多资源则向 resource manager 申请,resource manager 再次分配 container 给 application master。
  • 任务分发与运行监控:application master 获得资源后将作业 task 分发到 container 中运行,task 实时向 application master 汇报状态,若有 task 故障,application master 会尝试重启。
  • 资源释放与作业完成:当 application master 检测到所有 task 运行完毕,向 resource manager 申请释放资源,resource manager 释放相关 container,作业执行流程结束。

架构通用性

  • 该架构具有通用性,客户端可提交 map reduce 作业、spark 作业或自行编写的 job。只要任务实现 application master 接口,就能在集群中运行。例如 spark 作业提交后,同样先由 resource manager 分配 container 运行其 application master,后续流程类似其他作业,由 application master 自主解析任务、申请资源、分发 task 并监控运行。

高可用机制总结

在这里插入图片描述

一、多主节点与状态管理架构

  • 架构组成:高可用架构由多台主节点构成,其中一台主节点处于 active 管理状态,其余为 stand by 热备状态。
  • 状态决策机制:主节点间状态由 zookeeper 管控。zookeeper 主节点中选定管理节点并设为 active,当 active 节点故障,zk 会将其 resource manager 状态降为 stand by,并从 stand by 节点中选新管理主节点升级为 active,确保管理连续性。

二、元数据同步策略

hdfs 同步方式:在 hdfs 中,原数据通过 journal node 集群实现同步,保障数据一致性与完整性,使新 active 节点获取最新原数据管理集群。

  • Yarn 同步方式:Yarn 系统将元数据置于 zk 内,standby 节点可从中获取并同步,同步完成后经 ZK 切换为 active 进行集群管理,简化同步流程。

三、主从切换对任务的影响及应对操作

  • 任务阻塞现象:主从切换期间,集群运行任务会阻塞,直至新 active 状态的 resource manager 选出才继续执行,防止数据不一致与错误操作。
  • 命令操作功能:利用 yarn rmadmin 加参数可执行高可用操作,如获取节点状态,超级管理员可强制切换节点状态(stand by 转 active 或反之),便于灵活调整集群架构。

在这里插入图片描述


YARN 资源调度策略总结

YARN 作为重要的资源管理框架,其资源调度策略对任务执行效率影响重大。主要包括 FIFO、容量调度和公平调度三种策略。

一、FIFO 调度策略

在这里插入图片描述

  • 核心机制:采用单队列架构,任务依提交顺序依次执行。先提交的作业会独占集群全部资源运行,后续作业需等待前面作业完成才能获取资源启动。
  • 缺陷分析:对紧急且执行时间短的小任务极不友好。例如,若紧急小任务在大任务之后提交,即便其所需执行时间很短,也会因 FIFO 规则而长时间等待,可能错过最佳执行时机,严重影响系统对多样化任务的处理效率。

二、容量调度策略

在这里插入图片描述

  • 核心原理
    • 基于多队列设计理念,将集群资源预先分配给不同队列。如划分队列 A 用于处理大作业,分配集群 80%资源;队列 B 用于处理紧急小作业,分配 20%资源。作业提交时按类型进入相应队列获取资源运行,各队列作业可并行处理。
    • 每个队列资源占比并非绝对固定,可设置最大资源占用量。例如,可配置队列 B 在特定情况下(如队列 A 空闲时)最大可占用集群 100%资源,有效避免资源闲置浪费。
  • 配置要点
    • 在配置文件(如 yarn-site.xml)中需指定使用容量调度器。
    • 借助自定义配置文件详细设定各队列及子队列资源占比等参数。如在根队列下创建队列 A、B,并可在队列 A 下进一步设置子队列 A1、A2,同时明确各队列资源分配比例(如队列 A 占 80%,队列 B 占 20%,队列 A1 占队列 A 资源的 40%,队列 A2 占 60%等)。
      在这里插入图片描述

三、公平调度策略

在这里插入图片描述

  • 核心原则 见面分一半
    • 同样采用多队列架构,但队列间无预设固定资源占比,资源分配遵循公平原则。默认新任务提交时,若已有任务占用资源,会让出部分资源给新任务,使各队列按公平方式共享集群资源。例如,作业一提交至空闲队列 A 可占用全部资源,作业二提交后,队列 A 会在作业二执行前让出一半资源给作业二;队列内部也遵循类似机制。
    • 虽默认按公平方式分配资源,但在实际生产中,由于各队列任务资源需求差异,可通过调整队列权重实现灵活分配。默认每个队列权重为 1,若某队列需更多资源,可提升其权重。如将某队列权重设为 2,则该队列在资源分配时将获取更多比例资源,以满足不同任务对资源的实际需求。

在这里插入图片描述

  • 配置步骤
    • 首先在全局配置中选定公平调度器。
    • 然后在自定义配置环节针对不同队列设置权重等关键参数。例如,设置 sample query 队列权重为 2,确保公平调度器能根据实际业务场景进行合理资源调配。

YARN 运维

  • 作业查看与管理命令
    • 使用“yarn application -list”可查看集群中所有作业的 ID;
    • “yarn application -status”用于查看作业运行状态;找到作业 ID 后,
    • 用“yarn application -kill”能终止作业。

YARN 监控

在这里插入图片描述

  • 集群监控:默认端口是 8088,在此端口可查看整个集群的监控信息,如服务器数量、节点状态(例如有四个从节点处于 running 状态)、内存使用量以及 call 使用量等。
  • 作业监控:在监控界面左侧点击“applications”可进入作业监控界面,能查看集群中作业的运行和完成情况。

yarn 命令

一、资源管理命令

  1. yarn node -list

    • 功能:列出 YARN 集群中的节点信息。
    • 示例
      yarn node -list
      
    • 解释:该命令将显示 YARN 集群中所有节点的详细信息,包括节点的地址、节点的状态(如 RUNNING、DECOMMISSIONED、LOST 等)、节点的资源容量(如 CPU 核心数、内存大小)、已使用的资源量、剩余可用资源量等。这对于查看集群资源的整体使用情况非常有用。
  2. yarn queue -status <queue-name>

    • 功能:查看指定队列的状态信息。
    • 示例
      yarn queue -status default
      
    • 解释:YARN 中的队列用于管理资源分配,不同的应用程序可以提交到不同的队列中,以实现资源的隔离和调度。此命令可查看指定队列(如示例中的 default 队列)的资源使用情况,包括该队列已使用的资源、可用资源、等待运行的应用程序数量、正在运行的应用程序数量等。
  3. yarn application -list

    • 功能:列出 YARN 中正在运行的应用程序。
    • 示例
      yarn application -list
      
    • 解释:显示 YARN 集群中当前正在运行的所有应用程序的信息,如应用程序的 ID、名称、用户、启动时间、状态(如 RUNNING、ACCEPTED、FINISHED 等)、应用程序类型(如 MapReduce、Spark 等)以及应用程序占用的资源情况。

二、应用程序管理命令

  1. yarn application -kill <application-id>

    • 功能:终止指定的 YARN 应用程序。
    • 示例
      yarn application -kill application_12345_6789
      
    • 解释:通过提供应用程序的唯一 ID(如 application_12345_6789),可以终止该应用程序。这在需要停止某个长时间运行的异常应用程序或测试时需要强制结束某个应用程序时非常有用。
  2. yarn application -status <application-id>

    • 功能:查看指定应用程序的状态。
    • 示例
      yarn application -status application_12345_6789
      
    • 解释:该命令将给出应用程序的详细状态信息,包括应用程序的最终状态(如 SUCCEEDED、FAILED、KILLED 等)、运行进度(如果适用)、分配给该应用程序的容器信息(容器的数量、使用的资源等)、应用程序日志的 URL 等。

三、集群维护命令

  1. yarn rmadmin -getServiceState <service-name>

    • 功能:获取 YARN 服务的状态。
    • 示例
      yarn rmadmin -getServiceState ResourceManager
      
    • 解释:可以检查 YARN 服务(如 ResourceManager)的状态,以确定服务是否正常运行,服务状态可以是 ACTIVE、STANDBY 等。
  2. yarn rmadmin -refreshQueues

    • 功能:刷新队列配置。
    • 示例
      yarn rmadmin -refreshQueues
      
    • 解释:当修改了 YARN 的队列配置文件(如 capacity-scheduler.xml)后,使用此命令可以使新的队列配置生效,而无需重启 YARN 服务。

四、日志管理命令

  1. yarn logs -applicationId <application-id>
    • 功能:查看指定应用程序的日志。
    • 示例
      yarn logs -applicationId application_12345_6789
      
    • 解释:对于故障排除和监控,此命令允许查看特定应用程序的日志,包括应用程序运行时的标准输出和标准错误输出。可以帮助开发人员和管理员找出应用程序失败或性能不佳的原因。

五、容量调度器相关命令

  1. yarn schedulerconf -list
    • 功能:列出 YARN 容量调度器的配置信息。
    • 示例
      yarn schedulerconf -list
      
    • 解释:对于使用 YARN 容量调度器的集群,此命令可以显示调度器的配置信息,如队列的容量、最大容量、最小用户限制、队列之间的资源分配策略等。

六、YARN 集群信息查看命令

  1. yarn cluster -info
    • 功能:显示 YARN 集群的总体信息。
    • 示例
      yarn cluster -info
      
    • 解释:该命令会提供关于 YARN 集群的一些基本信息,例如 ResourceManager 的地址、Web 界面的 URL、集群的版本信息、集群的资源总容量等。

这些 YARN 命令可以帮助你在大数据环境中进行资源管理、应用程序管理、集群维护和故障排除等操作,在面试中熟悉这些命令可以展示你对 YARN 资源管理框架的操作能力和理解。根据不同的场景和需求,灵活使用这些命令可以更好地管理和维护 YARN 集群。

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

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

相关文章

【AI日记】25.01.19

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;自由宪章阅读原因&#xff1a;作者哈耶克&#xff0c;诺贝尔经济学奖得主&#xff0c;之前读过他的 《通往奴役…

5.最长回文子串--力扣

给你一个字符串 s&#xff0c;找到 s 中最长的 回文子串。 示例 1&#xff1a; 输入&#xff1a;s “babad” 输出&#xff1a;“bab” 解释&#xff1a;“aba” 同样是符合题意的答案。 示例 2&#xff1a; 输入&#xff1a;s “cbbd” 输出&#xff1a;“bb” 原题如上&…

GCPAAS/DashBoard:完全免费的仪表盘设计,基于Vue+ElementUI+G2Plot+Echarts,开源代码,简单易用!还在等什么呢

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GCPAAS/DashBoard&#xff0c;一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器&#xff0c;具备仪表盘目录管理…

Linux——线程条件变量(同步)

Linux——多线程的控制-CSDN博客 文章目录 目录 文章目录 前言 一、条件变量是什么&#xff1f; 1、死锁的必要条件 1. 互斥条件&#xff08;Mutual Exclusion&#xff09; 2. 请求和保持条件&#xff08;Hold and Wait&#xff09; 3. 不可剥夺条件&#xff08;No Preemption&…

“AI 辅助决策系统:决策路上的智慧领航员

在当今瞬息万变的时代&#xff0c;无论是企业的运营管理&#xff0c;还是个人在生活中的重大抉择&#xff0c;都需要精准、高效的决策。然而&#xff0c;信息的繁杂和未来的不确定性&#xff0c;常常让决策变得困难重重。这时&#xff0c;AI 辅助决策系统宛如一位智慧的领航员&…

某讯一面,感觉问Redis的难度不是很大

前不久&#xff0c;有位朋友去某讯面试&#xff0c;他说被问到了很多关于 Redis 的问题&#xff0c;比如为什么用 Redis 作为 MySQL 的缓存&#xff1f;Redis 中大量 key 集中过期怎么办&#xff1f;如何保证缓存和数据库数据的一致性&#xff1f;我将它们整理出来&#xff0c;…

DDD - 微服务落地的技术实践

文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…

闪豆多平台视频批量下载器

1. 视频链接获取与解析 首先&#xff0c;在哔哩哔哩网页中随意点击一个视频&#xff0c;比如你最近迷上了一个UP主的美食制作视频&#xff0c;想要下载下来慢慢学。点击视频后&#xff0c;复制视频页面的链接。复制完成后&#xff0c;不要急着关闭浏览器&#xff0c;因为接下来…

【STM32-学习笔记-14-】FLASH闪存

文章目录 FALSH闪存一、FLASH简介二、FLASH基本结构三、FLASH解锁四、使用指针访问存储器五、FLASH擦除以及编程流程Ⅰ、程序存储器全擦除1. 读取FLASH_CR的LOCK位2. 检查LOCK位是否为13. 设置FLASH_CR的MER 1和STRT 1&#xff08;如果LOCK位0&#xff09;4. 检查FLASH_SR的B…

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN&#xff08;ID&#xff1a;lichao19897314&#xff09; 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…

FPGA产业全景扫描

随着芯片种类日益丰富、功能日益强大&#xff0c;人们不禁好奇&#xff1a;一块FPGA是如何从最初的概念一步步呈现在我们面前的&#xff1f; FPGA设计、FPGA原型验证/仿真、FPGA板级调试和应用&#xff0c;是FPGA从概念到应用的必经之路。本文将围绕这几个核心环节&#xff0c…

SW - 钣金零件保存成DWG时,需要将折弯线去掉

文章目录 SW - 钣金零件保存成DWG时&#xff0c;需要将折弯线去掉概述笔记备注END SW - 钣金零件保存成DWG时&#xff0c;需要将折弯线去掉 概述 如果做需要弯折的切割件&#xff0c;最好做成钣金零件。 最近做了几个小钣金(将钣金展开&#xff0c;建立新草图&#xff0c;在2…

git系列之revert回滚

1. Git 使用cherry-pick“摘樱桃” step 1&#xff1a; 本地切到远程分支&#xff0c;对齐要对齐的base分支&#xff0c;举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2&#xff1a; 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…

Excel重新踩坑6:工作实战总结之根据筛选条件求平均成绩

一、前言&#xff1a; 这个博客的实战场景&#xff1a;给了一组学生数据&#xff0c;这些数据中&#xff0c;有全市20个社区&#xff0c;1-9年级的学生各科成绩。要求按照各社区统计1-9年级的所有学生各科平均值。下面首先介绍会用到的一些函数&#xff0c;然后再简单说明实战…

【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验

一、背景&#xff1a;当“审判”成为科学 1.1 虚拟场景——法庭审判 想象这样一个场景&#xff1a;有一天&#xff0c;你在王国里担任“首席审判官”。你面前站着一位嫌疑人&#xff0c;有人指控他说“偷了国王珍贵的金冠”。但究竟是他干的&#xff0c;还是他是被冤枉的&…

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章&#xff1a;三层架构和MVC 三层架构&#xff1a; 开发服务器端&#xff0c;一般基于两种形式&#xff0c;一种 C/S 架构程序&#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序&#xff0c;B/S 架构又分成了三层架构三层架构&#xff1a; 表现…

通过idea创建的springmvc工程需要的配置

在创建的spring mvc工程中&#xff0c;使用idea开发之前需要配置文件包括porm.xml、web.xml、springmvc.xml 1、porm.xml 工程以来的spring库&#xff0c;主要包括spring-aop、spring-web、spring-webmvc&#xff0c;示例配置如下&#xff1a; <project xmlns"http:/…

二、点灯基础实验

嵌入式基础实验第一个就是点灯&#xff0c;地位相当于编程界的hello world。 如下为LED原理图&#xff0c;要让相应LED发光&#xff0c;需要给I/O口设置输出引脚&#xff0c;低电平&#xff0c;二极管才会导通 2.1 打开初始工程&#xff0c;编写代码 以下会实现BLINKY常亮&…

搭建一个基于Spring Boot的数码分享网站

搭建一个基于Spring Boot的数码分享网站可以涵盖多个功能模块&#xff0c;例如用户管理、数码产品分享、评论、点赞、收藏、搜索等。以下是一个简化的步骤指南&#xff0c;帮助你快速搭建一个基础的数码分享平台。 — 1. 项目初始化 使用 Spring Initializr 生成一个Spring …

迅为RK3576开发板Android 多屏显示

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片&#xff0c;集成了4个Cortex-A72和4个Cortex-A53核心&#xff0c;以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…