当前位置: 首页 > news >正文

Spark UI

Spark UI

  • Executors
  • Environment
  • Storage
  • SQL
    • Exchange
    • Sort
    • Aggregate
  • Jobs
  • Stages
    • Stage DAG
    • Event Timeline
    • Task Metrics
      • Summary Metrics
      • Tasks

展示 Spark UI ,需要设置配置项并启动 History Server

# SPARK_HOME表示Spark安装目录 
${SPAK_HOME}/sbin/start-history-server.sh

打开 Spark UI 先见默认 Jobs 页面

  • 每个 Action 都对应一个 Job,而每个 Job 都对应着一个作业

Spark UI导航条:

在这里插入图片描述

入口页内容作用
JobsActions,数据读取/移动操作作业详情概览
StagesDAG 中每个 Stages 的入口Stages 详细概览
Storage分布式数据集缓存详细页Cache 在内存/磁盘中的发布情况
Environment配置项,环境变量详情Spark 配置项是否合理
Execution分布式运行环境/计算负载详情执行计划的每个环节

Executors

Executors 有两个部分:Summary/Executors

  • Executors:更细的粒度记录着每一个 Executor 的详情
  • Summary :所有 Executors 度量指标的累计和

在这里插入图片描述

每个 Executor 的工作负载信息:

Metrics含义
RDD Blocks原始数据集的分区数
Storage memoryCache 的内存占用
Disk Used计算过程中消耗的磁盘空间
Cores计算 CPU 核数
Action/Failed/Complete/Total Tasks(活跃的/失败的/完成的/总共的)分布式任务数量
Task Time(GC Time)任务执行时间(括号内为任务 GC 时间)
Input输入数据量大小
Shuffle Read/WriteShuffle 读写过程中消耗的数据量
Logs/Thread Dump日志与 Core Dump
  • 根据每个 Executor 的资源消耗,能判断不同 Executors 是否存在负载不均衡

Environment

Environment 记录了各种各样的环境变量与配置项信息

在这里插入图片描述

5 个环境信息:

Metrics含义
Runtime informationJava, Scala 版本号等信息
Spark Properties所有 Spark 配置项设置
Hadoop PropertiesHadoop 配置信息
System Properties应用提交方法(spark-shell/ spark-submit)
Classpath EntriesClasspath 路径设置信息
  • 根据 Spark Properties 信息,能排除是否因配置项设置而导致问题

Storage

Storage 记录了每个分布式缓存(RDD Cache、DataFrame Cache)

在这里插入图片描述

Storage 信息:

Storage Level存储级别
Cached Partitions已缓存分区数
Fraction Cached缓存比例
Size in Memory内存大小
Size on Disk磁盘大小
  • Cached Partitions/Fraction Cached 分别记录:数据集成功缓存的分区数量/这些缓存的分区占所有分区的比例
  • Fraction Cached < 100% 时,说明分布式数据集没有完全缓存到内存(磁盘),这时就要注意缓存换入换出的问题

SQL

SQL 的入口页面,记录了每个 Action 对应的 Spark SQL 执行计划。点击 Description 进入二级页面,记录了每个执行计划的详细信息

在这里插入图片描述

save 的执行计划 :

在这里插入图片描述

执行计划的示意图 :

在这里插入图片描述

计算过程中有过滤、投影、关联、分组聚合、排序 :

  • 红色部分为 Exchange,表示 Shuffle 操作
  • 蓝的部分为 Sort,表示排序
  • 绿色的部分为 Aggregate,表示(局部与全局的)数据聚合

Exchange

并列有两个 Exchange,对应的 SortMergeJoin 前的两个 Exchange :

在这里插入图片描述

Shuffle 的计算信息:

Shuffle records writtenShuffle Write 阶段写入的数据条目数
Shuffle write time totalShuffle Write 阶段花费的写入时间
Records readShuffle Read 阶段读取的数据条目数
Local bytes read totalShuffle Read 阶段从本地节点读取的数据总量
Fetch wait time totalShuffle Read 阶段花费在网络传输上的时间
Remote bytes read totalShuffle Read 阶段跨网络,从远节点读取的数据总量
Local blocks readShuffle Read 阶段从本地节点读取数据块数
Remote blocks readShuffle Read 阶段跨网络,从远节点读取的数据块数
Data size total原始数据在内存中展开后的总大小
Remote bytes read to diskShuffle Read 阶段因数据块过大而直接落盘的情况
Shuffle bytes written totalShuffle 中间文件总大小
  • 而过滤后的中签编号数据大小不足 10MB,对于这种大表 Join 小表,用 SortMergeJoin 不是很合理。可以使用强制广播或 AQE 让 Spark SQL 选择 BroadcastHashJoin

Sort

Sort 在运行时的内存消耗:

在这里插入图片描述

Sort 信息:

Sort time total排序消耗的总时间
Peak memory total内存消耗峰值
Spill size total排序过程中溢出到磁盘的数据总量
  • 根据 Peak memory total/Spill size total信息,能有效的设置 spark.executor.memory/ spark.memory.fraction/
    spark.memory.storageFraction,提高性能

例子:18.8GB 的峰值消耗和 12.5GB 的磁盘溢出这两条信息,就能知道当前 3GB 的 Executor Memory 是不够的。需要调整上面的 3个参数,来加速 Sort 的执行性能

Aggregate

Aggregate 主要是内存消耗,记录Spill size(磁盘溢出)/ Peak memory total(峰值消耗)

在这里插入图片描述

图中:零溢出与 3.2GB 的峰值消耗,证明 3GB 的 Executor Memory 能满足

Jobs

Jobs 的入口页面记录了每个 Action 对应作业的执行情况

  • 点击 Description 进入二级页面,记录了每个作业详细信息
  • Jobs 详情页会显示当前 Job 的所有 Stages。每个 Stage 的执行细节能通过 Description 的跳转

在这里插入图片描述

Stages

Stages 记录了每一个作业的 Stages。Description 进入二级页面,记录了每个 Stage 详情页

在这里插入图片描述

Stage 详情页包含 3 大类信息: Stage DAG、Event Timeline、Task Metrics

  • Task Metrics 分为 Summary、Entry details 提供不同粒度的信息汇总

Stage DAG

点击 DAG Visualization,就能获取到当前 Stage 的 DAG Stage。 DAG 仅是 SQL 页面完整 DAG 的一个子集

在这里插入图片描述

Event Timeline

点击 Event Timeline ,可视化信息记录了分布式任务调度与执行过程中,不同计算环节的主要时间花销

  • 图中的每个条带就代表着一个分布式任务,条带由不同的颜色构成

在这里插入图片描述

不同环节的计算时间:

Metrics颜色含义
Scheduler Delay深蓝调度延迟(调度系统开销)
Task Deserialization Time红色任务的反序列化时间(调度系统开销)
Shuffle Read Time橙色Shuffle Read 时间开销
Executor Computing Time绿色计算时间
Shuffle Write Time黄色Shuffle Write 时间开销
Result Serialization Time紫色任务结果的序列化时间
Getting Result Time浅蓝结果收集花费的时间

结合 Event Timeline,来判断作业是否存在调度开销过大、Shuffle 负载过重的问题

例子:深蓝的部分(Scheduler Delay)很多,就说明任务的调度开销很重。这时就需要参考公式:D / P ~ M / C ,来调整 CPU、内存、并行度,来减低任务的调度开销

  • D 是数据集尺寸,P 为并行度
  • M 是 Executor 内存,C 是 Executor 的 CPU 核数
  • 波浪线 ~ 表示:等式两边的数值,要在同一量级

例子:黄色(Shuffle Write Time)/橙色(Shuffle Read Time)的面积较大,就说明任务的 Shuffle 负载很重,这时就需要考虑是否能通过Broadcast Join 来消除 Shuffle

Task Metrics

Task Metrics

  • Summary Metrics : 对所有 Tasks 执行细节的统计汇总
  • Tasks : 以 Task 为粒度,记录着每个分布式任务的执行细节

Summary Metrics

点击 Show Additional Metrics ,勾选 Select All ,让所有的度量指标都生效

在这里插入图片描述

不同环节的计算时间 :

Metrics含义
DurationTask 执行时间
GC Time任务执行过程中, Java GC 时间
Peak Execution Memory内存峰值消耗
Spill ( Memory )溢出数据的内存占用
Spil (Disk)溢出数据的磁盘占用
Shuffle Read Size/ RecordsShuffle Read 读取的数据量/条目数量
Shuffle Read Blocked TimeShuffle Read 的网络延迟
Shuffle Remote ReadsShuffle Read 跨节点、从远端节点拉取的数据量
Shuffle Write Size RecordsShuffle Write 写入的数据量/条目数量
Shuffle Write TimeShuffle Write 花费的写入时间

Spill (溢出数据) : 因内存数据结构(PartitionedPairBuffer、AppendOnlyMap)空间受限,而腾挪出去的数据

  • Spill(Memory):这块数据在内存中的存储大小
  • Spill(Disk):这块数据在磁盘中的大小

Spill(Memory) / Spill(Disk)= Explosion ratio (数据膨胀系数) 。能估算它在内存中的存储大小

Tasks

Tasks度量指标 :

Metrics含义
Locality level本地性级别
Logs执行日志
Errors执行错误细节
  • Locality level:每个 Task 会结合本地性倾向,把 Tasks 调度到合适的 Executors/计算节点,尽可能保证数据不动、代码动
  • Logs : Tasks 的执行日志,记录了 Tasks 在执行过程中的运行状态
  • Errors :记录了报错信息,帮助快速定位问题

相关文章:

Spark UI

Spark UIExecutorsEnvironmentStorageSQLExchangeSortAggregateJobsStagesStage DAGEvent TimelineTask MetricsSummary MetricsTasks展示 Spark UI &#xff0c;需要设置配置项并启动 History Server # SPARK_HOME表示Spark安装目录 ${SPAK_HOME}/sbin/start-history-server…...

windows应用(vc++2022)MFC基础到实战(2)

目录向导和资源编辑器使用 MFC 应用程序向导创建 MFC 应用程序使用类视图管理类和 Windows 消息使用资源编辑器创建和编辑资源生成 MFC 应用程序的操作1.创建一个主干应用程序。2.了解即使在不添加你自己的任何一行代码的情况下&#xff0c;框架和 MFC 应用程序向导也能提供的内…...

记一次反射型XSS

记一次反射型XSS1.反射型XSS1.1.前言1.2.测试过程1.3.实战演示1.3.1.输入框1.3.2.插入代码1.3.3.跳转链接2.总结1.反射型XSS 1.1.前言 关于这个反射型XSS&#xff0c;利用的方式除了钓鱼&#xff0c;可能更多的就是自娱自乐&#xff0c;那都说是自娱自乐了&#xff0c;并且对系…...

BUUCTF-[羊城杯 2020]Bytecode

题目下载&#xff1a;下载 这道题是一个关于python字节码的。 补充一下相关知识&#xff1a;https://shliang.blog.csdn.net/article/details/119676978dis --- Python 字节码反汇编器 — Python 3.7.13 文档 手工还原参考:[原创]死磕python字节码-手工还原python源码-软件逆…...

《Uniapp入门指南:从安装到打包的全流程》

Uniapp是一款基于Vue.js的跨平台开发框架&#xff0c;可以快速构建出同时支持多个移动端平台和Web端的应用程序。本文将介绍Uniapp的基础知识和开发流程&#xff0c;帮助读者快速入门Uniapp开发。一、Uniapp的基础知识1.Uniapp的优势Uniapp的最大优势是可以快速开发同时支持多个…...

机器学习算法集成系统

版权所有:CSDN——川川菜鸟 本系统并不作为本专栏要求,这一篇自愿学习。 文章目录 本系统设计背景设计思路完整代码本系统设计背景 随着人工智能技术的不断发展,机器学习成为了人工智能领域的重要组成部分。机器学习算法能够从大量数据中发现模式、规律,并利用这些规律对新…...

scratch绘制雷达 电子学会图形化编程scratch等级考试三级真题和答案解析2022年9月

目录 scratch绘制雷达 一、题目要求 1、准备工作 2、功能实现 二、案例分析...

VRRP主备备份

1、VRRP专业术语 VRRP备份组框架图如图14-1所示: 图14-1:VRRP备份组框架图 VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器,如SwitchA和SwitchB。虚拟路由器(Virtual Router):又称VRR…...

【软件逆向】软件破解?病毒木马?游戏外挂?

文章目录课前闲聊认识CTF什么是CTFCTF解题模式什么是逆向定义应用领域CTF中的逆向现状推荐书籍学习要点逆向工程学习基础常规逆向流程阶段一:信息收集阶段二:过保护后静态调试阶段三:结合动态调试阶段四:写解题脚本逆向例题概览1-控制台程序解题过程2-Crackme3-游戏4-移动安全C…...

curl请求常用参数和返回码

curl是一个用于传输数据的工具&#xff0c;支持各种协议&#xff0c;如HTTP、FTP、SMTP等。以下是一些常用的curl请求参数及其作用&#xff1a; -X, --request&#xff1a;指定HTTP请求方法&#xff0c;常见的有GET、POST、PUT、DELETE等。 -H, --header&#xff1a;设置HTTP请…...

【STM32】进阶(一):抢占式优先级和响应式优先级(NVIC_PriorityGroupConfig)

1、简介 STM32(Cortex-M3)中每个中断源都有两级优先级&#xff1a;抢占式优先级&#xff08;pre-emption priority&#xff09;和子优先级&#xff08;subpriority&#xff09;&#xff0c;子优先级也叫响应式优先级。 1.1 抢占式优先级 望文知义&#xff0c;就是优先级高的…...

LogCompilation后JIT输出文件格式解析

https://wiki.openjdk.org/display/HotSpot/LogCompilationoverview https://spotcodereviews.com/articles/optimization/2020/12/23/why-does-the-jit-continually-recompile-the-same-method.html task_queued count表示总共执行次数&#xff0c;iicount表示解释器执行次数…...

Linux学习第二十四节-Podman容器

一、容器的概念 容器是由一个或多个与系统其余部分隔离的进程组成的集合。我们可以理解为“集装箱”。 集装箱是打包和装运货物的标准方式。它作为一个箱子进行标记、装载、卸载&#xff0c;以及从一个 位置运输到另一个位置。该容器的内容与其他容器的内容隔离&#xff0c…...

基于quartz实现定时任务管理系统

基于quartz实现定时任务管理系统 背景 说起定时任务框架&#xff0c;首先想到的是Quartz。这是定时任务的老牌框架了&#xff0c;它的优缺点都很明显。借助PowerJob 的readme文档的内容简单带过一下这部分。 除了上面提到&#xff0c;还有elastic-job-lite、quartzui也是相当…...

vue-element-admin:基于element-ui 的一套后台管理系统集成方案

文章目录一、vue-element-admin1、vue-element-admin1.1简介1.2安装2、vue-admin-template2.1简介2.2安装一、vue-element-admin 1、vue-element-admin 1.1简介 vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 GitHub地址&#xff1a;https://github.com…...

KVM-7、KVM 虚拟机创建的几种方式

通过对 qemu-kvm、libvirt 的学习,总结三种创建虚拟机的方式: (1)通过 qemu-kvm 创建 (2)通过 virt-install 创建 (3)通过 virt-manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持 cpu 的硬件虚拟化技术(Intel 是 vmx,AMD 是svm),通过下面方式进行查看…...

Hadoop三大框架之HDFS

一、概述HDFS产生的背景及定义HDFS产生背景随着数据量越来越大&#xff0c;在一个操作系统存不下所有的数据&#xff0c;那么就分配到更多的操作系统管理的磁盘中&#xff0c;但是不方便管理和维护&#xff0c;需要一种系统来管理多台机器上的文件&#xff0c;这就是分布式文件…...

好好的系统,为什么要分库分表?

不急于上手实战 ShardingSphere 框架&#xff0c;先来复习下分库分表的基础概念&#xff0c;技术名词大多晦涩难懂&#xff0c;不要死记硬背理解最重要&#xff0c;当你捅破那层窗户纸&#xff0c;发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下&#xff0…...

多种调度模式下的光储电站经济性最优储能容量配置分析(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

二分法(适用于任何题型!!!)

今天看二分法看了一天&#xff0c;看吐了&#xff0c;现在讲讲怎么做类题。 只讲两种做法&#xff08;实则是可合并为一种&#xff09;&#xff0c;任何题型都可以转化为这种做法&#xff01;&#xff01;&#xff01;是任何&#xff01; 首先&#xff0c;设置 int left,righ…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...