[平台建设] Spark任务的诊断调优
发布时间 - 2025-07-19 00:00:00 点击率:次背景
目前,平台上的大部分任
务都是Spark任务,用户在提交Spark作业时需要配置Spark executor的个数、每个executor的核心数以及executor的内存大小等。这些配置主要依赖于用户的个人经验,导致一些用户设置不合理,例如配置过大的内存,而实际任务运行时所需的内存却非常少。基于此,我们希望开发一个工具来分析任务,帮助用户监控和优化任务,并提供建议,使任务更加高效,同时减少资源配置不当对其他用户任务的影响。
通过调研,我们发现了一个开源项目Dr. Elephant,它的目标与我们的需求基本一致。
Dr. Elephant介绍:
Dr. Elephant是一款针对Apache Hadoop和Apache Spark的作业和流程级性能监控与调优工具。
Dr功能介绍:
更多详细信息请参考Dr. Elephant的用户指南:https://www./link/ee9a1fc09b64d5cdd17ba7b7f6640409
为了满足我们的一些定制化需求,我们需要了解Dr. Elephant的架构,并阅读其源码进行相关改造和适配。
Dr. Elephant的系统架构如下图所示,主要包括三个部分:
- 数据采集:数据源为Job History
- 诊断和建议:内置诊断系统
- 存储和展示:MySQL和WebUI
Dr. Elephant定期从Hadoop平台的YARN资源管理中心获取近期的所有任务,包括成功和失败的任务。每个任务的元数据(如任务计数器、配置信息和运行信息)可以从Hadoop平台的历史任务服务端获取。一旦获取到任务的元数据,Dr. Elephant会基于这些数据运行启发式算法,生成一份关于该任务性能的诊断报告。报告会根据任务的执行情况,为任务标记一个待优化的严重性级别。严重性级别分为五级,报告会对任务进行级别定位,并通过级别表明任务中存在的性能问题的严重程度。
启发式算法的主要任务包括:
- 获取数据
- 量化计算打分
- 将分值与不同诊断等级阈值进行比较
- 给出诊断等级
源码解析与改造
首先,我们需要了解Dr. Elephant的整体运行流程。
由于我们只关注Spark任务,下面主要介绍Spark指标的采集方式。
我们已经了解了Dr. Elephant执行的大致流程,因为只采集Spark任务,所以不需要太多额外的代码和抽象。关键的改造步骤如下:
- 通过YARN API获取执行的作业,只需要对ExecutorJob直接使用
org.apache.spark.deploy.history.SparkFSFetcher#fetchData方法,获取eventlog,并对eventlog进行重放解析。 - 将解析后的数据获取相关需要的信息,直接写入MySQL库。因为涉及连接HDFS、YARN等服务,需要将
hdfs-site.xml、core-site.xml等文件放置在配置目录下。 - 最终将程序改造成一个main方法直接运行的常驻进程。采集后的主要信息包括:
- 采集stage相关指标信息
- 采集app任务配置、executor个数、核数等,执行开始时间、结束时间、耗时等
改造后的整体流程如下:
在规则平台上进行配置,根据规则对相关指标定级,并以不同颜色区分展示,同时给出相关的诊断意见。
总结
本文主要基于平台用户平常提交的Spark任务进行思考,调研并引入Dr. Elephant。通过阅读Dr. Elephant的相关源码,理解其执行的整体流程,并对代码进行改造,适配我们的需求。最终将其转变为平台产品,用于对用户的Spark任务进行诊断并提供相关的调优建议。
参考资料:
- https://www./link/8d4965eaf92972d652fd44ece6f79533
- https://www./link/92f2c86007260e130e78c68fb7d800a1
- https://www./link/9a1a05c42c96b161ecd2884b758e114a
# mysql
# git
# apache
# 工具
# qq
# ai
# 架构
# yarn
# xml
# history
# github
# 算法
# hadoop
# spark
# hdfs
# https
# 系统架构
# 并对
# 都是
# 太多
# 不需要
# 只需
# 平台上
# 将其
# 所需
# 会对
# 资源配置
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何在IIS7上新建站点并设置安全权限?
详解阿里云nginx服务器多站点的配置
Laravel怎么调用外部API_Laravel Http Client客户端使用
Laravel Session怎么存储_Laravel Session驱动配置详解
动图在线制作网站有哪些,滑动动图图集怎么做?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何破解联通资金短缺导致的基站建设难题?
详解jQuery中基本的动画方法
如何自定义建站之星网站的导航菜单样式?
简单实现jsp分页
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
bootstrap日历插件datetimepicker使用方法
Laravel如何升级到最新版本?(升级指南和步骤)
如何用y主机助手快速搭建网站?
Laravel如何实现多对多模型关联?(Eloquent教程)
如何在阿里云通过域名搭建网站?
如何在宝塔面板中创建新站点?
如何挑选高效建站主机与优质域名?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
开心动漫网站制作软件下载,十分开心动画为何停播?
EditPlus中的正则表达式 实战(1)
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
如何快速搭建支持数据库操作的智能建站平台?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
,怎么在广州志愿者网站注册?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
C#如何调用原生C++ COM对象详解
Linux网络带宽限制_tc配置实践解析【教程】
郑州企业网站制作公司,郑州招聘网站有哪些?
如何在搬瓦工VPS快速搭建网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
如何用JavaScript实现文本编辑器_光标和选区怎么处理
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
html如何与html链接_实现多个HTML页面互相链接【互相】
高端企业智能建站程序:SEO优化与响应式模板定制开发
Bootstrap整体框架之CSS12栅格系统
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
JavaScript如何操作视频_媒体API怎么控制播放
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化

