【大数据】HADOOP-Yarn集群界面UI指标项详解(建议收藏哦)

news2024/11/16 9:34:56

目录

    • 首页(Cluster)
      • 节点信息
      • Scheduler Metrics:集群调度信息
    • 节点信息详解(Nodes)
    • 应用列表信息(applications)
    • 队列详情页(Scheduler)
      • 指标详细说明(非常重要)

首页(Cluster)

在这里插入图片描述

集群监控信息指标详解

  • Apps Submitted:已提交的应用
  • Apps Completed:已完成的应用
  • Apps Running:正在运行的应用
  • Containers Running:正在运行的容器
  • Memory Total:集群总内存,大小等于所有的NodeManager管理的内存之和
    <property>
    	<name>yarn.nodemanager.resource.memory-mb</name>
    	<value>8192</value>
        <description>表示这个NodeManager管理的内存大小</description>
    </property>
    
  • Memory Used:已使用内存
  • VCores Total:集群 CPU 总核数, 等于所有的NodeManager管理的虚拟核心之和
    <property>
    	<name>yarn.nodemanager.resource.cpu-vcores</name>
    	<value>8</value>
    	<description>表示这个NodeManager管理的虚拟核心个数</description>
    </property>
    
  • VCores Used:已使用的 CPU 核数
  • Memory Reserved:预留的内存
  • VCores Reserved:预留的 CPU 核数

VCores Reserved 和 Memory Reserved的存在逻辑

资源预留发生在应用向Yarn进行资源申请的时候。yarn的资源预留机制是一种资源保证机制,它发生在应用程序申请的资源无法得到满足的时候。即,当应用程序申请的资源此刻无法满足但是未来只要有一定的资源释放就可以得到满足的情况下,yarn会面临两种选择:

  • 优先为这个应用程序预留一个节点上的资源,直到累计释放的空闲资源满足了应用的需求。这种资源的分配方式叫做增量资源分配,即Incremental placement;

  • 暂时放弃当前节点资源,直到某个节点的资源一次性满足应用程序的需求。这种分配方式叫做一次性资源分配,即all-or-nothing;

两种分配方式各有优缺点,对于增量资源分配而言,资源预留机制会导致资源浪费,集群资源利用率低,而一次性资源分配虽然在发现资源无法满足某个应用需求的时候及时放弃,但是,这个应用有可能永远得不到自己请求的资源因而永远无法运行,即饿死现象;

因此,yarn最终还是采用了增量资源分配机制,尽管会造成一定的资源浪费,但是不会出现饿死现象,大小应用都有平等的运行机会;

Yarn的一次资源预留,精确来讲,是将 某一个container 在 某个服务器节点上 做资源预留;它发生在服务器节点的可用资源无法满足container所需要的资源的情况下。

YARN 实际的总内存为:Memory Total + Memory Reserved = 所有节点的(Mem Used + Mem Avail)之和

节点信息

  • Active Nodes:当前集群存活的节点个数,(其实就是NodeManager的个数)
  • Decommissioned Nodes:集群退役的节点个数
  • Lost Nodes:集群丢失的节点个数
  • Unhealthy Nodes:集群运行状况不良的节点个数
  • Rebooted Nodes:集群重启的节点个数

Scheduler Metrics:集群调度信息

  • Scheduler Type:集群使用的调度器类型(Apache默认Capacity CDH默认是Fair)
  • Scheduling Resource Type:调度器资源类型内存
  • Minimum Allocation:一个作业的最小内存为1G和1cpu核
  • Maximum Allocation:一个作业的最大内存为8G和4cpu核

节点信息详解(Nodes)

Yarn 的集群节点的情况,从 Active Nodes 下面的数字点击进去,可以看到具体的节点列表信息。里面包含了所在机架、运行状态、节点地址、最后健康上报上报时间、运行的容器个数、使用内存CPU 等信息,还有版本号。如下图。
在这里插入图片描述

  • Node Lables:节点标签,通过对节点打标签,可以控制任务运行在特定类型的标签节点上
  • Rack:机架,可以通过机架感知机制与配置
  • Node State:节点状态信息,Running表示运行正常
  • Node Address: NodeManager的ip地址和访问端口
  • Node HTTP Address:NodeManager的web应用HTTP访问地址
  • Last health-update:节点健康汇报时间
  • Health-report:心跳报告的存储路径
  • Containers:节点内正在运行的Containers个数
  • Mem Used:节点已用内存
  • Mem Avail:节点可用的总内存(默认是8G yarn.nodemanager.resource.memory-mb配置)
  • Vcore Used:节点正在运行作业所占用的CPU核数
  • Vcores Avail:节点可用的总虚拟CPU核数(yarn.nodemanager.resource.cpu-vcores配置)

应用列表信息(applications)

在这里插入图片描述

包括以下内容:

  • 任务的ID
  • 任务的名字
  • 应用的类型和所在队列
  • 任务的开始、启动时间和结束时间
  • 任务当前的状态和最终状态。
  • 任务占用的相关资源。
  • 任务的应用类型主页。如果是 spark 任务的话,显示的是 spark 的 ui 页面

在这里插入图片描述
Aggregate Resource Allocation是在org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplicationAttempt类中进行计算的,主要逻辑如下:

  // 资源信息更新间隔:3秒
  private static final long MEM_AGGREGATE_ALLOCATION_CACHE_MSECS = 3000;
  // 最后更新时间、最后更新时的每秒的内存和CPU使用量
  protected long lastMemoryAggregateAllocationUpdateTime = 0;
  private long lastMemorySeconds = 0;
  private long lastVcoreSeconds = 0;
 
 /**
   * 返回任务拥有的所有container每秒所消耗的资源(内存、CPU)总和
   * @return
   */
  synchronized AggregateAppResourceUsage getRunningAggregateAppResourceUsage() {
    long currentTimeMillis = System.currentTimeMillis();
    // Don't walk the whole container list if the resources were computed
    // recently.
    // 判断是否达到更新条件:当前时间 - 最后更新时间 > 最大更新间隔(3秒)
    if ((currentTimeMillis - lastMemoryAggregateAllocationUpdateTime)
        > MEM_AGGREGATE_ALLOCATION_CACHE_MSECS) {
      long memorySeconds = 0;
      long vcoreSeconds = 0;
      // 迭代所有的container,计算每个container每秒所消耗的资源(内存、CPU)
      for (RMContainer rmContainer : this.liveContainers.values()) {
        // 获取container的运行时间
        long usedMillis = currentTimeMillis - rmContainer.getCreationTime(); 
        // 计算container每秒所消耗的资源(内存、CPU)
        Resource resource = rmContainer.getContainer().getResource();
        // 汇总内存和CPU使用量
        memorySeconds += resource.getMemory() * usedMillis /  
            DateUtils.MILLIS_PER_SECOND;
        vcoreSeconds += resource.getVirtualCores() * usedMillis  
            / DateUtils.MILLIS_PER_SECOND;
      }
      
      // 记录最后更新任务资源使用情况的时间、任务最后每秒使用的内存和CPU数量
      lastMemoryAggregateAllocationUpdateTime = currentTimeMillis;
      lastMemorySeconds = memorySeconds;
      lastVcoreSeconds = vcoreSeconds;
    }
    return new AggregateAppResourceUsage(lastMemorySeconds, lastVcoreSeconds);
  }
 
  /**
   * 返回任务使用的资源情况
   * @return
   */
  public synchronized ApplicationResourceUsageReport getResourceUsageReport() {
    AggregateAppResourceUsage resUsage = getRunningAggregateAppResourceUsage();
    // 返回任务所使用的资源情况:所使用的container数量、预留的container数量、当前消耗的资源、当前预留的资源、所需的总资源(当前消耗的资源+当前预留的资源)、每秒的内存和CPU使用量
    return ApplicationResourceUsageReport.newInstance(liveContainers.size(),
               reservedContainers.size(), Resources.clone(currentConsumption),
               Resources.clone(currentReservation),
               Resources.add(currentConsumption, currentReservation),
               resUsage.getMemorySeconds(), resUsage.getVcoreSeconds());
  }

点击到 appattempt_xxx 详情页,能看到任务申请的所有container,一般01_0000001 是代表ApplicationMaster的容器,还可以看到详细的日志信息。

队列详情页(Scheduler)

在这里插入图片描述

指标详细说明(非常重要)

可 参考 另外一篇 队列资源配置详解 YARN容量调度器多队列配置详解实战

  • Queue State:队列运行状态,Running表示正常运行
  • Used Capacity:已使用资源占队列配置值的百分比
  • Configured Capacity:配置该队列容量(绝对资源容量)yarn.scheduler.capacity..capacity
  • Configured Max Capacity:配置该队列最大可使用容量(绝对资源容量)yarn.scheduler.capacity..maximum-capacity
  • Effective Capacity:配置该队列有效容量,通过(yarn.scheduler.capacity.root.{queue}.capacity)配置
  • Effective Max Capacity:有效最大容量,通过(yarn.scheduler.capacity.root.{queue}.maximum-capacity)配置
  • Absolute Used Capacity:已使用资源占集群的百分比
  • Absolute Configured Capacity:队列资源容量的百分比
  • Absolute Configured Max Capacity:队列资源容量的最大百分比
  • Used Resources:已使用的memory和CPU
  • Configured Max Application Master Limit:对用户使用队列的最大资源比例进行限制
  • Max Application Master Resources:该queue能使用的最大的内存和core
  • Used Application Master Resources:该queue已经被使用的内存和core
  • Max Application Master Resources Per User:每个user最多可以使用该queue的最大内存和core
  • Num Schedulable Applications:正在被调度的app应用个数
  • Num Non-Schedulable Applications:没有被调度的app应用个数
  • Num Containers:已启用的container容器数量
  • Max Applications:最多可以运行的任务数量,配置项:yarn.scheduler.capacity.maximum-applications
  • Max Applications Per User:每个user最多可以运行的任务数量
  • Configured Minimum User Limit Percent:每个user最多可以使用队列资源的百分比
  • Configured User Limit Factor:队列中的用户允许占用队列值的多少,默认值是0.0~1,如果将值设置为1,它代表:最大可以占用整个队列资源,如果将值设置为2,它代表:允许队列所占资源增长到最多为队列容量的两倍,配置项:yarn.scheduler.capacity.root.ops.user-limit-factor
  • Accessible Node Labels:
  • Ordering Policy:
  • Preemption:
  • Intra-queue Preemption:
  • Default Node Label Expression:
  • Default Application Priority:

希望对正在查看文章的您有所帮助,记得关注、评论、收藏,谢谢您

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

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

相关文章

斯坦福:chatGPT可能有了人类心智,相当于9岁儿童!

chatGPT已经具备了人类独心智&#xff0c;这话不是我说的&#xff0c;是一位来自斯坦福大学计算机科学家说的。很多玩过chatGPT的人都见识过他的”无所不知”&#xff0c;但是&#xff0c;我觉得最让我吃惊的是&#xff0c;他比以前我们用过那些对话机器人最大的差别就是你甚至…

「数据科学」数据科学家为什么应该学习PostgreSQL?

SQL是成为数据科学家的必要条件吗?答案是肯定的。数据科学已经发展了&#xff0c;虽然许多数据科学家仍然使用CSV文件(值以逗号分隔的文本文件)&#xff0c;但它们不是最好的选择。Python Panda库允许从CSV文件加载数据&#xff0c;但是这些文件有许多约束。例如&#xff0c;它…

各种常用C/C++集成开发环境的安装与配置

新学期又开始了&#xff0c;帮助又一堆菜鸟安装和配置C/C集成开发环境是一件恼人的工作。 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载&#xff0c;但需要注明原作者"海洋饼干叔 叔"&#xff1b;本文不允许以纸质及电子出版为目的…

【k8s】如何搭建搭建k8s服务器集群(Kubernetes)

搭建k8s服务器集群 服务器搭建环境随手记 文章目录搭建k8s服务器集群前言&#xff1a;一、前期准备&#xff08;所有节点&#xff09;1.1所有节点&#xff0c;关闭防火墙规则&#xff0c;关闭selinux&#xff0c;关闭swap交换&#xff0c;打通所有服务器网络&#xff0c;进行p…

Bash Shell 通过ls命令筛选文件

Bash Shell 通过ls命令及其管道根据大小名称筛选文件 最近参与的项目当中有需要用pyarmor加密项目的要求&#xff0c;听网上吹的pyarmor都那么神&#xff0c;用了一下感觉也一般&#xff0c;试用版普通模式下文件加密居然还有大小32KB的限制&#xff0c;加密到一半就失败了&am…

Linux常用命令汇总

1、tcpdump抓包 tcpdump这个命令是用来抓包的&#xff0c;默认情况下这个命令是没有的&#xff0c;需要安装一下&#xff1a; yum install -y tcpdump 使用这个命令的时候最好是加上你网卡的名称&#xff0c;不然可能使用不了&#xff1a; tcpdump -nn -i {网卡名称} 网卡名称…

iOS开发笔记之九十六——本地Data Persistence总结笔记

本质上来说&#xff0c;不管是哪种缓存方式最终都会以文件的形式存储在磁盘上&#xff0c;只不过上层进行了某种“封装”或“抽象”&#xff0c;所以还是做了分类&#xff0c;目前iOS本地持久化缓存&#xff08;Storage/Persistence&#xff09;有以下几种形式&#xff1a;User…

vTESTstudio - VT System CAPL Functions - VT2004(续1)

成熟,就是某一个突如其来的时刻,把你的骄傲狠狠的踩到地上,任其开成花或者烂成泥。vtsStartStimulation - 启动激励输出功能&#xff1a;自动激励输出注意&#xff1a;在启动激励输出之前&#xff0c;一定要设置好输出模式Target&#xff1a;目标通道变量空间名称&#xff0c;例…

TLB内存页表 - LoongArch

TLB内存页表 - LoongArch 文章目录TLB内存页表 - LoongArch页表操作指令TLB相关寄存器页表格式CpuSetAttributesUEFI Memory attribute页表操作指令 LDDIR: 用于软件页表遍历过程中目录项的访问. LDPTE: 用于在软件页表遍历过程中页表项的访问. INVTLB: 用于无效TLB中的内容. …

Mybatis源码分析:Mybatis的数据存储对象

前言&#xff1a;SQLSession是对JDBC的封装 一&#xff1a;SQLSession和JDBC的对照说明 左边是我们的客户端程序&#xff0c;右边是我们的MySQL数据仓&#xff0c;或者叫MySQL实例 Mybatis是对JDBC的封装&#xff0c;将JDBC封装成了一个核心的SQLSession对象 JDBC当中的核心对…

2023年浙江理工大学MBA招生考试初试成绩查询及复查的通知

根据往年的情况&#xff0c;2023浙江理工大学MBA考试初试成绩可能将于2月21日下午两点公布&#xff0c;为了广大考生可以及时查询到自己的分数&#xff0c;杭州达立易考教育为大家汇总了信息。 一、成绩查询考生可登录中国研究生招生信息网“全国硕士研究生招生考试初试成绩查询…

二十四节气—雨水,好雨知时节,当春乃发生。

雨水&#xff0c;是二十四节气之第2个节气。 雨水节气不仅表明降雨的开始及雨量增多&#xff0c;而且表示气温的升高&#xff0c;意味着进入气象意义的春天。 雨水节是一个非常富有想象力和人情味的节气&#xff0c;在这一天&#xff0c;不管下不下雨都充满着一种雨意蒙蒙的诗…

nps内网穿透工具

一、准备一台有公网ip的服务器 https://github.com/ehang-io/nps/releases 在这个地址下载服务端的安装包&#xff0c;centos的下载这个 上传到服务器上。 二、然后解压&#xff0c;安装&#xff0c;启动 [rootadministrator ~]# tar xzvf linux_amd64_server.tar.gz [roo…

【C语言】预编译

&#x1f6a9;write in front&#x1f6a9; &#x1f50e;大家好&#xff0c;我是謓泽&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

[架构之路-110]-《软考-系统架构设计师》-软件架构设计-3-架构描述语言ADL与UML

前言&#xff1a;第3节 架构描述语言ADL3.1 ADL概述3.1.1 什么是ADLADL&#xff0c;即架构描述语言(Architecture Description Language)。两个重要的团体在使用架构描述语言术语。它们是&#xff1a;软件工程团体企业建模和工程团体。在软件工程团体&#xff0c;架构描述语言&…

Jvm -堆对象的划分

堆对于一个jvm进程来说是唯一的&#xff0c;一个进程只有一个jvm&#xff0c;但是进程半酣多个线程&#xff0c;多个线程共享一个堆。 也就是说&#xff0c;一个jvm实例只存在一个堆&#xff0c;同时对也是Java内存管理的核心区域。 Java堆区域的大小在jvm启动时就已经被确定…

基于springboot+vue的儿科保健计划免疫系统

基于springbootvue的儿科保健计划免疫系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背…

HDMI协议介绍

HDMI全称&#xff08;High Definition Multimedia Interface&#xff09;高清多媒体接口&#xff0c;支持在单线缆上传输全数字高清视频和多声道音频。 HDMI基于TMDS协议传输&#xff0c;主要用于DVD, 机顶盒等音视频source到TV&#xff0c;显示器等sink设备的传输。HDMI向下兼…

SpringBoot学习笔记:SpringBoot集成JPA-01

文章目录概述JPA的优点在Springboot中集成步骤1.新建springboot项目步骤2.引入相关jar包&#xff0c;pom.xml文件如下:步骤3. 配置文件application.properties设置步骤4. 定义表的ORM对象类步骤5. 实现数据库操作接口(Dao)步骤6. 实现Controller测试概述 JPA是一种规范&#x…

PHP学习笔记(一谦四益)

前言 上一篇文章 PHP学习笔记&#xff08;观隅反三&#xff09;分享了数组的知识&#xff0c;这篇文章接着分享和数组相关的算法。 算法效率 算法效率分为两种&#xff1a;第一种是时间效率&#xff0c;第二种是空间效率。时间效率被称为时间复杂度&#xff0c;而空间效率被称…