Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[平台建设] Spark任务的诊断调优

[平台建设] Spark任务的诊断调优

作者头像
awwewwbbb
发布于 2022-04-27 01:05:55
发布于 2022-04-27 01:05:55
96800
代码可运行
举报
运行总次数:0
代码可运行

背景

平台目前大多数任务都是Spark任务,用户在提交Spark作业的时候都要进行的一步动作就是配置spark executor 个数、每个executor 的core 个数以及 executor 的内存大小等,这项配置目前基本靠用户个人经验,在这个过程中,有的用户就会设置非常不合理,比如配置的内存非常大,实际上任务运行时所占用的内存极少. 基于此,希望能有工具来针对任务进行分析,帮助用户来监控和调优任务,并给出一些建议,使任务更加有效率,同时减少乱配资源影响其他用户任务运行的情况。

Dr. Elephant介绍

通过调研,发现一个开源项目 Dr. Elephant 基本与想要达成目标一致。

DR.Elephant 介绍:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dr. Elephant is a job and flow-level performance monitoring and tuning tool for Apache Hadoop and Apache Spark

Dr功能介绍:

https://github.com/linkedin/dr-elephant/wiki/User-Guide

接下来就是需要了解下Dr的架构, 因为我们有些定制化的需求,所以需要了解下架构,以及阅读源码进行相关改造适配。

Dr. Elephant 的系统架构如下图。主要包括三个部分:

数据采集:数据源为 Job History

诊断和建议:内置诊断系统

存储和展示:MySQL 和 WebUI

Dr.Elephant定期从Hadoop平台的YARN资源管理中心获取近期所有的任务,这些任务既包含成功的任务,也包含那些失败的任务。每个任务的元数据,例如任务计数器、配置信息以及运行信息都可以从Hadoop平台的历史任务服务端获取到。一旦获取到了任务的元数据,Dr.Elephant就基于这些元数据运行启发式算法,然后会产生一份该启发式算法对该任务性能的诊断报告。根据每个任务的执行情况,这份报告会为该任务标记一个待优化的严重性级别。严重性级别一共分为五级,报告会对该任务产生一个级别的定位,并通过级别来表明该任务中存在的性能问题的严重程度。

启发式算法具体要做的事情就是:

  • 获取数据
  • 量化计算打分
  • 将分值与不同诊断等级阈值进行比较
  • 给出诊断等级

源码解析与改造

首先我们要知道Dr整体的运行流程是怎么样的?

因为我们只需要关注Spark任务,下面主要介绍下Spark指标如何采集?

上面我们已经知道Dr执行的大致流程, 我们只采集spark任务, 所以不用太多额外的代码和抽象.

只需要关键的几个步骤改造即可:

1.首先还是通过yarn api 获取执行的job, 我们只需要对ExecutorJob直接使用org.apache.spark.deploy.history.SparkFSFetcher#fetchData方法, 获取eventlog, 并对eventlog进行重放解析

  1. 将解析后的数据,获取相关需要的信息,直接写入mysql库
  2. 因为涉及连接hdfs,yarn 等服务,将hdfs-site.xml,core-site.xml等文件放置配置目录下
  3. 最终将程序改造成一个main方法直接运行的常驻进程运行

采集后的主要信息:

  • 采集stage相关指标信息
  • 采集app任务配置、executor个数、核数等,执行开始时间、结束时间、耗时等

改造后整体流程如下:

规则平台进行配置, 有了采集数据, 根据规则对相关指标定级, 并以不同颜色区分展示,并给出相关诊断意见.

总结

本文主要根据平台用户平常提交的spark任务思考,调研引入Dr. Elephant, 通过阅读Dr 相关源码, 明白Dr 执行整体流程并对代码进行改造,适配我们的需求.最终转变为平台产品来对用户的Spark任务进行诊断并给出相关调优建议.

参考

https://engineering.linkedin.com/blog/2016/04/dr-elephant-open-source-self-serve-performance-tuning-hadoop-spark

https://github.com/linkedin/dr-elephant

https://blog.csdn.net/qq475781638/article/details/90247623

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Dr.Elephant中文文档-1】Dr. Elephant简介
Dr. Elephant是一个Hadoop和Spark的性能监控和调优工具。它能自动采集作业的度量指标并分析他,然后以简单明了的方式展现出来。Dr. Elephant的设计思想是通过作业分析结果来指导开发者进行作业调优,从而提升开发者效率和集群资源的利用率。Dr. Elephant使用了一组可配置的插件式启发算法来分析hadoop和spark作业并提供优化建议。然后针对结果数据来建议如何调整作业。这个算法还计算了作业的许多其他度量标准,用来为集群作业优化提供了有价值的参考信息。
一条老狗
2019/12/26
3.3K1
【Dr.Elephant中文文档-1】Dr. Elephant简介
【Dr.Elephant中文文档-4】开发者指南
为了在本地部署Dr.Elephant测试,你需要安装Hadoop(version 2.x)或者Spark(Yarn mode, version > 1.4.0),以及资源管理服务和历史作业服务(可以用伪分布式)。关于伪分布式模式在 YARN 上运行 MapReduce 作业相关说明可以在这里(https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html)[1]找到。
一条老狗
2019/12/26
1.3K0
大数据测试学习笔记之监控工具Dr.Elephant
大数据测试学习笔记之监控工具Dr.Elephant 随着大数据测试方面的学习扩展得越来越多,开始找了些关于大数据技术方面的监控工具,本文主要介绍linkedin开源的Dr.Elephant监控工具。 介绍 一句话介绍: Dr.Elephant是Apache Hadoop和Apache Spark的job级和工作流级性能监视和调优工具。 由Linkedin开源贡献,github地址为: https://github.com/linkedin/dr-elephant 定位: 成一个对Hadoop和Spark任务
苦叶子
2018/04/09
2K1
大数据测试学习笔记之监控工具Dr.Elephant
大数据平台:计算资源优化技术&作业诊断
大数据平台的资源管理组件主要针对存储资源与计算资源进行分析优化。前文《大数据平台:资源管理及存储优化技术》主要介绍了存储资源优化,本文主要介绍大数据平台构建过程中,计算资源相关的优化技术。
Yiwenwu
2024/05/03
8200
大数据平台:计算资源优化技术&作业诊断
【Dr.Elephant中文文档-5】用户指南
这个页面包含了集群最近的统计信息。列出了最近 24 小时分析过的作业数量,可进行优化的作业数量和待优化的作业数量。
一条老狗
2019/12/26
1K0
【Dr.Elephant中文文档-5】用户指南
Dr.Elephant实战常见问题及解决方法
通过之前一系列的文章叙述,想必大家都对dr.elephant有了一个较为清晰的了解。通过自己线上经验的积累,以及和一些读者的交流,我汇总了一些大家在实战中遇到的问题和解决方案。
一条老狗
2019/12/26
2K0
Dr.Elephant实战常见问题及解决方法
OPPO 大数据诊断平台“罗盘”正式开源
OPPO 大数据平台目前有 20+个服务组件,数据量超 1EB,离线任务数近百万,实时任务数千,数据开发分析师超千人。这也带来了系统复杂度的问题,一方面是用户经常对自己的任务运行状况“摸不着头脑”,不管是性能问题,还是参数配置问题,甚至是一些常见的权限报错问题,都需要咨询平台给出具体的解决方案;另一方面是平台面对各类繁杂任务,运维人员经常需要对任务故障定位和排除,由于任务链路长,组件日志多,运维压力大。因此急需对任务进行实时监控和诊断,不仅要能够帮助用户快速定位异常问题,还需给出具体的建议和优化方案,同时还能治理各类“僵尸”和不合理任务,从而达到降本增效的目的。据调研,目前业界尚无成熟的开源任务诊断平台。为此我们开发了大数据诊断平台,通过诊断平台周优化任务实例数超2 万,取得了良好的效果。
从大数据到人工智能
2023/05/14
1.6K0
OPPO 大数据诊断平台“罗盘”正式开源
【Dr.Elephant中文文档-3】快速安装说明
Step 1: 在 GitHub 上注册一个账号,并 fork 一份Dr. Elephant项目代码。
一条老狗
2019/12/26
1.6K4
【Dr.Elephant中文文档-6】度量指标和启发式算法
我们将作业的资源使用量定义为任务容器大小和任务运行时间的乘积。因此,作业的资源使用量可以定义为mapper和reducer任务的资源使用量总和。
一条老狗
2019/12/26
1.3K0
Spark的调度系统
一,简介 Spark调度机制可以理解为两个层面的调度。首先,是Spark Application调度。也就是Spark应用程序在集群运行的调度,应用程序包括Driver调度和Executor调度。其次,就是每个Spark Application都会有若干Jobs(Spark Actions),然后这些job是以何种机制,在Executor上执行的,也是需要一个调度管理的机制,该层面调度也可以理解为SparkContext内部调度。之所以会出现这种情况,主要是生产中可能会希望一个SparkContext作为服
Spark学习技巧
2018/01/30
1.8K0
Kylin配置Spark并构建Cube
在运行 Spark cubing 前,建议查看一下这些配置并根据集群的情况进行自定义。下面是建议配置,开启了 Spark 动态资源分配:
create17
2019/08/29
1.3K0
Kylin配置Spark并构建Cube
国庆假期份额干货,往期文章在这里都能看到
互联网技术将我们带入了信息爆炸的时代,面对海量的信息,一方面用户难以迅速发现自己感兴趣的信息,另一方面长尾信息得不到曝光。为了解决这些问题,个性化推荐系统应运而生。美图拥有海量用户的同时积累了海量图片与视频,本文分享了美图数据技术团队在个性化推荐上的实践与探索,展现了美图个性化的发展路线,通过推荐系统有效建立了用户与内容的连接,大幅度提升产品的用户体验。
美图数据技术团队
2018/12/27
4350
加速Flink布局,Pinterest的自助式故障诊断工具实践
为简化和加速故障排查,Pinterest 流处理平台团队基于 Flink 构建并推出了称为 Dr. Squirrel 的诊断工具,揭示并聚合任务状态,洞悉根本致因,提供解决问题的可操作过程。自发布以来,该工具显著提升了开发人员和平台团队的工作效率。
深度学习与Python
2021/11/10
8910
加速Flink布局,Pinterest的自助式故障诊断工具实践
第一天:spark基础
Hadoop 的概念可追溯到 2003,2004 Google2篇论文(老版三辆马车),2011年发布1.0版本,2012年发布稳定版。Hadoop 在2.0版本之前组件主要是 HDFS跟MapReduce。
sowhat1412
2020/11/05
7630
第一天:spark基础
Kylin配置Spark并构建Cube(修订版)
在运行 Spark cubing 前,建议查看一下这些配置并根据集群的情况进行自定义。下面是建议配置,开启了 Spark 动态资源分配:
create17
2019/09/05
9210
查看Spark任务的详细信息
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
程序员欣宸
2019/10/22
3K0
查看Spark任务的详细信息
vivo 实时计算平台建设实践
vivo 实时计算平台是 vivo 实时团队基于 Apache Flink 计算引擎自研的覆盖实时流数据接入、开发、部署、运维和运营全流程的一站式数据建设与治理平台。
2020labs小助手
2023/01/04
1.1K0
大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
  Spark 是一种快速、通用、可扩展的大数据分析引擎,2009 年诞生于加州大学伯克利分校 AMPLab,2010 年开源,2013 年 6 月成为 Apache 孵化项目,2014 年 2 月成为 Apache 顶级项目。项目是用 Scala 进行编写。   目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含 SparkSQL、Spark Streaming、GraphX、MLib、SparkR 等子项目,Spark 是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark 使我们可以简单而低耗地把各种处理流程整合在一起。而这样的组合,在实际的数据分析过程中是很有意义的。不仅如此,Spark 的这种特性还大大减轻了原先需要对各种平台分别管理的负担。   大一统的软件栈,各个组件关系密切并且可以相互调用,这种设计有几个好处:   1、软件栈中所有的程序库和高级组件都可以从下层的改进中获益。   2、运行整个软件栈的代价变小了。不需要运行 5 到 10 套独立的软件系统了,一个机构只需要运行一套软件系统即可。系统的部署、维护、测试、支持等大大缩减。   3、能够构建出无缝整合不同处理模型的应用。   Spark 的内置项目如下:
黑泽君
2019/05/07
1.1K0
大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序
Hive on Spark实战:深入理解与配置Spark集群
Hive 默认使用 MapReduce 作为执行引擎,即 Hive on mr。实际上,Hive 还可以使用 Tez 和 Spark 作为其执行引擎,分别为 Hive on Tez 和 Hive on Spark。由于 MapReduce 中间计算均需要写入磁盘,而 Spark 是放在内存中,所以总体来讲 Spark 比 MapReduce 快很多。
TASKCTL 任务调度平台
2024/11/12
6290
Hive on Spark实战:深入理解与配置Spark集群
Spark 以及 spark streaming 核心原理及实践
本文主要介绍了如何基于Spark、Hadoop、HBase、Hive、Spark Streaming和Kafka等分布式计算技术,结合Java、Scala、Python和R等编程语言,实现大数据平台搭建、数据处理和机器学习等应用。包括Spark生态、原理、架构、编程范式和调优技巧等方面的内容。
蒋专
2017/04/26
4.8K0
Spark  以及 spark streaming 核心原理及实践
相关推荐
【Dr.Elephant中文文档-1】Dr. Elephant简介
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档