Spark作业运行异常慢的问题定位和分析思路
一直很慢 🐢
运行中状态、卡住了,可以从以下两种方式入手:
如果 Spark UI 上,有正在运行的 Job/Stage/Task,看 Executor 相关信息就好。💻
- 第一步,如果发现卡住了,直接找到对应的 Executor 页面:
- 第二步,不断的刷新,看看 Task 线程栈执行的内容是什么:
如果 Spark UI 上,没有正在运行的 Job/Stage/Task,看 Driver 相关信息就好。🖥️
- 第一选择是看 Driver 的 ThreadDump,分析 Driver 在执行什么逻辑。
- 第二选择,如果发现 Driver 的线程栈没异常的时候,可以结合 driver 日志查看日志最后的信息是什么。
运行结束了 🏁
- 首先看看是否有执行时间明显比较长(或者对比历史执行时间比较长)的 Job, Stage:
- 查看 Jobs 页面,寻找运行耗时相对较长的作业(注意:这里的 Duration 时间是 Job 启动时间和结束时间的耗时,不代表真正的耗时,例如可能存在多个 Job 同时运行,就会出现受资源影响的情况,可能 Duration 比较长,实际真正执行时间比较短的情况):
- 查看 Stages 页面,确定运行时间比较长的 Stage(注意,这里的 Duration 和 Job 的 Duration 是一样的,只代表执行起始时间的跨度,不代表实际执行耗时)
- 查看 Duration 时间比较长的 Stage 的实际执行时间,找到执行时间较长的 Stage:
- 还可以查看所有成功 Task 的执行 Metrics 的直方统计图,以便分析数据倾斜等情况,同时注意 GC 时间的占比,分析是否存在内存问题。
- 查看 Jobs 页面,寻找运行耗时相对较长的作业(注意:这里的 Duration 时间是 Job 启动时间和结束时间的耗时,不代表真正的耗时,例如可能存在多个 Job 同时运行,就会出现受资源影响的情况,可能 Duration 比较长,实际真正执行时间比较短的情况):
注意 ⚠️
上面提到了执行慢可能是 资源问题 也可能是 逻辑或者数据问题,如何确定呢:
- 如果上述的 Stage 的详情耗时与历史执行对比,基本一致,那么基本可以判断为资源问题。
- 如果直方图中显示的 Task Duration 有可判断为数据倾斜的情况(个别 Task 慢,且输入或输出数据远大于其他 Task),可能是数据倾斜导致的。
- 如果并不符合数据倾斜的特征,但是某个节点的 Task 执行都慢,可能是机器负载异常导致。
- Spill 指标比较高,可能是内存压力大,spill 至磁盘导致计算变慢,这种情况需要总结和评估是否加内存或者接受稍慢的情况。
比历史慢 🐢
排查步骤:
- 首先对比两次执行的 Job 或者 Stage 是否有明显的运行时间区别。
- 对比执行逻辑是否有改变(例如 broadcast join 变为 sortmerge join),sql 可以查看执行计划,rdd 可以分区 job 的 dag。
- driver 内存压力大,导致调度能力下降(目前可以关注 Driver 的 gc 日志)。
- 对比是否有数据量的变动,查看 stage 的输入输出就可以了:
- 资源的差异,可以查看对应的 stage 的 executor 统计或者队列资源的监控。
- 数据倾斜:
相关文章:

Spark作业运行异常慢的问题定位和分析思路
一直很慢 🐢 运行中状态、卡住了,可以从以下两种方式入手: 如果 Spark UI 上,有正在运行的 Job/Stage/Task,看 Executor 相关信息就好。💻 第一步,如果发现卡住了,直接找到对应的…...

音视频转为文字SuperVoiceToText
音视频转为文字SuperVoiceToText,它能够把视频或语音文件高效地转换为文字,它是基于最为先进的 AI 大模型,通过在海量语音资料上进行训练学习而造就,具备极为卓越的识别准确率。 不仅如此,它支持包括汉语、英语、日语…...

Python基础教程(九):Lambda 函数
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...

docker从入门到精通
一、Docker基本命令 1. Docker的常用命令 帮助命令 docker version # docker版本信息 docker info # 系统级别的信息,包括镜像和容器的数量 docker 命令 --help 帮助文档 镜像命令 docker images 查看所有本地主机上的镜像 [rootiZ2zeg4ytp0whqtmxbsqiiZ…...
介绍工厂模式
简单工程 public class SingleFactoryTest {public static void main(String[] args) {SingleFactory factory new SingleFactory();Product productA factory.getObject("1");productA.method();Product productB factory.getObject("2");productB.me…...
大数据领域的workload是什么意思?
什么是workload? 在大数据领域,"workload"指的是需要处理的数据集和对其执行的操作的组合。它描述了大数据系统需要执行的任务的类型和规模。 我们可以从以下几个维度来理解大数据领域的 workload: 数据的特征: 数据量 需要处…...
引入别人的安卓项目报错
buildscript { repositories { google() jcenter() } dependencies { classpath com.android.tools.build:gradle:4.1.0 // 使用最新版本的插件 } } allprojects { repositories { google() jcenter() } } 在…...

Python Excel 指定内容修改
需求描述 在处理Excel 自动化时,财务部门经常有一个繁琐的场景,需要读取分发的Excel文件内容复制到汇总Excel文件对应的单元格内,如下图所示: 这种需求可以延申为,财务同事制作一个模板,将模板发送给各员工,财务同事需收取邮件将员工填写的excel文件下载到本机,再类似…...

【力扣高频题】003.无重复字符的最长子串
前段时间和小米的某面试官聊天。因为我一直在做 算法文章 的更新,就多聊了几句算法方面的知识。 并且在聊天过程中获得了一个“重要情报”:只要他来面试,基本上每次的算法题,都会去考察关于 子串和子序列 的问题。 的确…...

redis03 补充 事件
1.文件事件...

绿联Nas docker 中 redis 老访问失败的排查
部署了一些服务,老隔3-5 天其他服务就联不上 redis 了,未确定具体原因,只记录观察到的现象 宿主机访问 只有 ipv6 绑定了,ipv4 绑定挂掉了 其他容器访问 也无法访问成功 当重启容器后: 一切又恢复正常。 可能的解…...

Linux入门学习(2)
1.相关复习新的指令学习 (1)我们需要自己创建一个用户,这个用户前期可以是一个root用户,后期使用创建的普通用户 (2)文件等于文件内容加上文件属性,对于文件的操作就包括对于文件内容的操作和文件属性&…...
Spring boot开启跨域配置
Spring boot开启跨域配置 背景 跨域(Cross-Origin)是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时,域名、协议或端口不同的这种情况。具体来说,如果一个网页试图通过脚本(如JavaScript)…...
java面试题:hashCode的作用
在Java集合中,hashCode起着至关重要的作用,特别是在基于哈希的集合类如HashMap、HashSet和Hashtable中。以下是hashCode在集合中的主要作用: 快速查找和定位: hashCode被用作确定对象在哈希表中存储位置的索引(或称为“…...
从零开始精通Onvif之获取设备信息
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 与设备交互的第一步 发现设备之后,与设备进行交互的第一步,是连接上设备,并获取设备的信息。连接设备&#…...

FiRa标准UWB MAC实现(三)——距离如何获得?
继续前期FiRa MAC相关介绍,将FiRa UWB MAC层相关细节进一步进行剖析,介绍了UWB技术中最重要的一个点,高精度的距离是怎么获得的,具体使用的测距方法都有哪些,原理又是什么。为后续FiRa UWB MAC的实现进行铺垫。 3、测距方法 3.1 SS-TWR SS-TWR为Single-Sided Two-Way Ra…...
基于百度翻译API的火车头PHP翻译插件,可以翻译HTML片段
关于火车头的百度翻译插件,相信大家在火车头官网或网上都能找到相关代码,百度翻译插件是PHP写的,就一个PHP文件,简单灵活,不受火车头软件版本限制,任何有PHP插件权限的火车头版本都可以使用。但是百度API翻…...
mysql高级用法常用函数
mysql高级用法 1、自定义排序 select * from movies order by field(actors, 成龙, 靳东, 刘亦菲, 范冰冰); // 字段中存在null值 select * from movies order by field (coalesce(actors,null),成龙, 靳东, 刘亦菲, 范冰冰,null)2、空值NULL排序(ORDER BY IF(ISN…...
【打印100个常用Linux命令】
#!/bin/bash 定义一个函数,用于打印100个常用Linux命令 print_commands() { echo “以下是一些常用的Linux命令:” echo “----------------------------------” echo “1. pwd - 显示当前工作目录” echo “2. ls - 列出当前目录下的文件和文件夹” …...

友情提示:lazarus的tsortgrid.autofillcolumns存在BUG
直接在tsortgrid的属性中设置autofillcolumns为true,会提示:123个错误。即使修改为false,编译运行照样会出现上述错误。唯一解决的办法就是删除sortgrid重新添加一个。 代码设置SortGrid1.AutoFillColumns : TRUE不受影响。...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...