[平台建设] 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任务,所以不需要太多额外的代码和抽象。关键的改造步骤如下:

  1. 通过YARN API获取执行的作业,只需要对ExecutorJob直接使用org.apache.spark.deploy.history.SparkFSFetcher#fetchData方法,获取eventlog,并对eventlog进行重放解析。
  2. 将解析后的数据获取相关需要的信息,直接写入MySQL库。因为涉及连接HDFS、YARN等服务,需要将hdfs-site.xmlcore-site.xml等文件放置在配置目录下。
  3. 最终将程序改造成一个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怎么控制播放  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化