Spark UI

news2025/8/6 6:19:58

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 :记录了报错信息,帮助快速定位问题

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

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

相关文章

【女神节】简单使用C/C++和Python嵌套for循环生成一个小爱心

目录 前言实现分析代码实现代码如下效果如下优化效果代码如下效果如下总结尾叙前言 女神节马上到了,有女朋友的小伙伴是不是已经精心准好礼物了呢!对于已婚男士,是不是整愁今天又该送什么礼物呢!说真的,我也整愁着,有什么要推荐么,评论留言下! 实现分析 可以先在纸上或…

HashMap底层实现原理及面试题

文章目录1. 常见的数据结构有三种结构1.1 各自数据结构的特点2. HashMap2.1 概述2.2 底层结构2.2.1 HashMa实现原理&#xff1a;2.2.1.1 map.put(k,v)实现原理2.2.1.2 map.get(k)实现原理2.2.1.3 resize源码2.2.2 HashMap常用的变量2.2.3 HashMap构造函数2.3 JDK1.8之前存在的问…

JUC并发编程——多把锁

一、多八锁 多把不相干的锁 一间大屋子有两个功能&#xff1a;睡觉、学习&#xff0c;互不相干。 现在小南要学习&#xff0c;小女要睡觉&#xff0c;但如果只用一间屋子&#xff08;一个对象锁&#xff09;的话&#xff0c;那么并发度很低 解决方法就是准备多个房间&#x…

Validator校验之ValidatorUtils

注意&#xff1a;hibernate-validator 与 持久层框架 hibernate 没有什么关系&#xff0c;hibernate-validator 是 hibernate 组织下的一个开源项目 。 hibernate-validator 是 JSR 380&#xff08;Bean Validation 2.0&#xff09;、JSR 303&#xff08;Bean Validation 1.0&…

python实现半色调技术图像转换

半色调技术 半色调技术是一种将灰度图像转换为黑白图像的技术。它是通过将灰度图像的像素值映射到黑白像素值上来实现的。 比如说&#xff0c;在一块只能显示纯黑或纯白的屏幕上&#xff0c;如何将一张灰度图显示出灰度的效果&#xff0c;这时就可以用半色调技术实现。 如下…

SpringBoot整合MybatisPlus

文章目录前言一、MybatisPlus是什么&#xff1f;二、使用步骤1.导入依赖2.编写配置文件3.编写Controller和实体类4.编写持久层接口mapper5.启动类加包扫描注解6.测试总结前言 本篇记录一下SpringBoot整合MybatisPlus 一、MybatisPlus是什么&#xff1f; MyBatis-Plus&#xff…

webview的工作、内存泄漏、漏洞以及缓存机制原理原理+方案解决

分析一段appium的日志来分析webview的工作原理&#xff0c;文章尾部附有自动化脚本及完整日志&#xff1a; 解析&#xff1a; 获取上下文列表 服务端发送命令adb shell cat /proc/net/unix获取域套接字列表。那什么是域套接字呢&#xff1f; 域套接字&#xff1a;是unix系统里…

旋转矩阵的作用:世界坐标变换;求解局部坐标系下的局部坐标

旋转矩阵的作用&#xff1a;世界坐标变换&#xff1b;求解局部坐标系下的局部坐标1、旋转矩阵代表了一个局部坐标系2、世界坐标变换3、求解局部坐标系下的局部坐标1、旋转矩阵代表了一个局部坐标系 以下数据以平面直角坐标系为例&#xff0c;三维空间同理 上图中&#xff0c;…

第七章:Java常用类

第七章&#xff1a;Java常用类 7.1&#xff1a;字符串相关的类 String的特性 String表示是字符串&#xff0c;使用一对""引起来表示。 String声明为final的&#xff0c;不可被继承。 String实现了Serializable、Comparable接口&#xff0c;表示字符是支持序列化和…

【WPF 值转换器】ValueConverter 进阶用法

【WPF 值转换器】ValueConverter 进阶用法介绍基类实现子类实现效果介绍 值转换器在WPF开发中是非常常见的&#xff0c;当然不仅仅是在WPF开发中。值转换器可以帮助我们很轻松地实现&#xff0c;界面数据展示的问题&#xff0c;如&#xff1a;模块隐藏显示、编码数据展示为可读…

拼多多跨境电商业务将正式登陆澳洲,持续助力中国制造业开拓全球市场

配图来自Canva可画 拼多多出海又有新进展。据最新消息&#xff0c;拼多多跨境电商业务将于3月13日正式进入澳大利亚、新西兰&#xff0c;持续推动中国制造业直连澳洲以及全球市场。 去年9月&#xff0c;拼多多正式在北美地区上线跨境电商平台TEMU。自上线至今&#xff0c;TEM…

硬件设备二 调试分类、软/硬件断点、OpenOCD、JLink、STLink 使用

近期工作开始主用 OpenOCD 来进行相关开发工作的调试&#xff0c;因此本文重点来学习一下&#xff01;本文以 OpenOCD 为重点&#xff0c;辅以 JLink、STLink 作为对比来进行学习。 调试 本地调试 本地调试通常指调试使用的环境与调试的目标运行环境一致的调试方法&#xff0…

linux软件管理

软件管理 1、rpm管理工具 RPM是(Redhat Package Manager) 的缩写&#xff0c;由Red Hat公司提出的一种软件包管理标准 &#xff08;1&#xff09;rpm软件包的典型命名格式&#xff1a; 例&#xff1a;zsh-5.0.2-14.el8.x86_64.rpm zsh-50214el8x8664软件名主版本号次版本号…

day26_HTML

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 见代码 一、二阶段介绍 第一阶段: 基础入门 java基本语法编程基础(方法,数组)面向对象编程常用类高级(IO,线程,新…

新增 IEC61850、Profinet 驱动

2 月&#xff0c;Neuron 团队主要侧重于开发新的驱动&#xff0c;新增了南向 IEC61850 驱动、南向 Allen-Bradley DF1 驱动、Profinet 驱动支持以及静态点位等功能&#xff0c;这些新驱动和新功能将在 2.4 版本中正式发布。 IEC61850 驱动 IEC61850 标准是电力系统自动化领域…

网络基础(2)

目录1. 端口号2. 套接字socket3. 网络通信3.1 sockaddr与sockaddr_in3.2 接口服务端3.2.1 创建套接字&#xff0c;打开网络文件3.2.2 给该服务器绑定端口和ip&#xff08;特殊处理&#xff09;3.2.3 初始化相关服务器3.2.4 提供服务客户端3.2.5 绑定3.2.6 使用服务4. makefile实…

关于 JavaScript 中的 Promises

在 JavaScript 中&#xff0c;Promise 是一个对象&#xff0c;它表示一个可能还不可用&#xff0c;但会在未来解决的值。Promises 用于处理异步操作&#xff0c;例如发出网络请求或访问数据库&#xff0c;其中结果不是立即可用的。如果你准备好了&#xff0c;我想开始我们的冒险…

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

本文目录前言做项目的三大好处强强联手(天狗组合)专栏作者简介专栏的优势后端规划1. SpringBoot 和 SpringCloud 的选择2. Mybatis 和 MybatisPlus 和 JPA 的选择3. MySQL 和 Mongodb 的选择4. Redis 和 RocketMQ5. 后端规划小总结后端大纲提前掌握的知识点一期SpringBoot二期S…

EventLoop机制

JavaScript 是单线程的语言 JavaScript 是一门单线程执行的编程语言。也就是说&#xff0c;同一时间只能做一件事情。 单线程执行任务队列的问题&#xff1a; 如果前一个任务非常耗时&#xff0c;则后续的任务就不得不一直等待&#xff0c;从而导致程序假死的问题。 同步任…

机器学习和深度学习的综述

机器学习和深度学习的综述 1.1.1人工智能、机器学习、深度学习的关系 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是最宽泛的概念&#xff0c;是研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。由于这个定义…