基于 Spark UI 性能排查及调优

  其他常见问题
内容纲要

概要描述


Inceptor 性能问题除了通过 Log 进行数据分析,还可以利用 Spark UI 做性能调整和优化。
那么本篇就介绍一下 Spark UI 的信息,以及如何利用 Spark UI 进行性能问题的排查。

详细说明


大致会按照以下几个部分做简单介绍:

  • Spark UI 页面信息的基本概念;
  • Spark UI 页面信息的作用;
  • Spark UI 页面常见问题的总结;

Spark UI 页面信息基本概念

Spark UI 入口,在运行了 Inceptor server 角色的节点的 4040 端口即可访问;可以直接登陆:http://Inceptor-server-ip:4040
如果是新版本的 TDH ,可能已经安装了 dbaservice 希望切换回旧版本的 Spark UI 可以参考这个连接:关闭DBAService,使用旧版Spark UI

主页介绍

此文档只介绍性能相关的信息,其他内容不做介绍;

file

  1. Jobs 标签,可以看到当前所有任务,以及 Job 的执行时间;
  2. Stages 页面,可以看到应用的所有 stage,以及详细的 task 执行情况;
  3. Executors 页面,这里可以看到 executor 使用的内存、并发的 task 数量,还可以搜集一些jvm 相关信息(jstack、jmap等);
1、Jobs 标签

Jobs 页面可以显示总体的运行情况,包括调度模式(Scheduling Mode),运行模式(Cluster 或者 local);
Jobs Event timeline 下面显示具体的 sql 内容、提交用户、提交时间、执行时间;以及这一个 sql 被分成了几个 stage、几个 task ;以及 task 执行的情况等信息;

file

  • Stages:Succeeded/Total 下面的 0/1 代表当前 job 被分成了 1 个 stage,完成了 0 个;

  • Tasks:Succeeded/Total 下面的 0/15 代表当前 job 被分成了 15 个 task,完成了 0 个;
    PS:深蓝色部分代表已经完成的,浅蓝色部分代表分配了 CPU core 正在运行的,空白部门代表 executor 没有可用 CPU core 资源,未执行的任务
    file

  • Duration 可以按照升序、降序排列,可以通过这个查看当前运行时间最久的 job 是哪一个,是否异常的 job;

通过 job 的 description 的 link 能点击进去看到 job 的更详细的执行情况;

file

2、Detail for Job

Group id 后面的部分就是 当前 Job 的唯一标识符,这个页面可以看到 Job 的当前执行情况;

file

3、Detail for Stage
  • Summary Metrics for 18 Completed Tasks:已完成task 的性能指标总结,是task 级别的:

    • 我们需要关注的,25%的,50%的,75%的,比如最短的1s ,25% 的都是60s,那就说明 1s 的这个没有什么参考价值,同样道理最大的也是一样
  • Aggregated Metrics by Executor,executor 级别的性能指标:

    • 某个节点上执行的时间差异,以及某个节点上的executor 的执行情况,和executor 页面很类似;
  • Tasks,更详细的每个 task 的性能指标统计,包括:

    • task id
    • attempt:任务重试次数
    • status:任务状态
    • locality Level:数据本地化级别
    • Executor:在哪个节点执行
    • launch time:启动时间
    • scheduler delay:调度延迟
    • duration:运行时长
    • Gctime:任务 Gctime
    • errors:报错信息

file

需要重点关注的是几个时间指标:

  1. scheduler delay 超过 3s 时;
  2. 当 GCTime 超过 Duration 的 10% 时,就有可能是因为出现了 FGC,需要调整 executor 的内存,或者优化 sql;
4、Executors

Executors 页面可以看到有多少个 executor,并且可以点击特定的 executor 后面的 Thread Dump 获取 jstack 信息;
其中 driver 代表的是 Inceptor-server 的信息,点击 driver 后面的 Thread Dump 可以获取 server 的jstack,点击 Heap Histogram 可以获取 server 的 jmap 信息;

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。