spark ui 指南
- [++++1.sparkUI 基本介绍++++](#1.sparkUI 基本介绍)
- ++++2.jobs页面++++
- [++++3.stages 页面++++](#3.stages 页面)
- [++++4.storage 页面++++](#4.storage 页面)
- [++++5.environment 页面++++](#5.environment 页面)
- [++++6.ececutor 页面++++](#6.ececutor 页面)
- [++++7 sql 页面++++](#7 sql 页面 )
spark ui 是反应一个spark 作业执行情况的页面,通过查看作业的执行情况,分析作业运行的状态.
1.sparkUI 基本介绍
进入运行主页面如下,主要有6各部分 任务实例: http://10.71.190.31:18081/history/application_1638893170232_266874/jobs/
|---|-------------|-----------------|-------------------------------------------------------------------------------------------------------------------------|
| | 标签页 | 描述 | |
| 1 | jobs | spark作业执行的job | |
| 2 | stages | 所有stage信息 | The Stages tab displays a summary page that shows the current state of all stages of all jobs in the Spark application. |
| 3 | storage | rdd存储信息 | RDDs and DataFrame持久化 |
| 4 | environment | 作业配置参数 | JVM, Spark, and system 属性 |
| 5 | executors | 展示作业executors信息 | 任务executor创建信息, 包括 内存 ,磁盘使用 ,task ,shuffle信息) |
| 6 | sql | 解析sql 的信息 | |
2.jobs页面
本次任务有14个job
2.1 event_time
按照时间顺序executor 的开始和结束时间点(added, removed)
2.2 job tab页面
每个job的信息包括 job id, description描述 , 提交时间, 耗时, stages数量, task 运行情况
2.3 job详情页面
点击job 描述可以进入对应的job详情页面
- Status: SUCCEEDED (running, succeeded, failed)
- Submitted: 2021/12/14 11:48:06
- Duration: 1.5 min
- Associated SQL Query: 2 job 的sql tab 连接
- [Completed Stages:](#Completed Stages:) 1 每个状态的stage 数量 (active, pending, completed, skipped, failed)
- [Skipped Stages:](#Skipped Stages:) 8
Event Timeline
DAG Visualization : job 的有向无环图, 点表示: RDDs or DataFrames 边表示: rdd上的操作
stage根据active, pending, completed, skipped, and failed状态分类的列表
input : 从storage 读取字节数
output: 写入storage 字节数
shuffle read : shuffle 和 记录读取的字节数, 包括 本地数据读取和其他executor 节点读取字节数
shuffle write : 写入磁盘的字节和记录数,在下一个stage的shuffle 阶段读取.
注意看到stage 19-24 是 跳过了, 原因是spark shuffle 的数据会写到磁盘固化,当上游当上游stage(19-24)和之前执行过的stage 相同时,可以直接用之前的结果.
问题 :从图可以看出job之间是否可以并行?
3.stages 页面
3.1 stages 页面会显示作业所有的stage信息, 同样根据状态分组(active, pending, completed, skipped, and failed)
3.2 Stage detail
所有task 的总时间, 统计矩阵, shuffle 信息, 所属的job id
dag图上 展示一些操作名称: BatchScan, WholeStageCodegen, Exchange, etc
task 之间是否可以并行?
4.storage 页面
作业执行过程中缓存信息,包含 rdd 的大小和分部信息
运行时显示,但是B站的spark ui 点了没反应
5.environment 页面
作业运行环境和参数
查看 driver 和 executor 实际配置的大小
driver=6g executor=9g
6.ececutor 页面
作业包含的executor统计指标
正在运行中的任务有 thread dump ,跟踪task 的执行过程, 目前只能点开 driver 的节点, executor 节点 点击不开.
7 sql 页面
spark SQL 的执行情况, 一条sql 在spark 中如何执行. 但是B站的spark ui 点了没反应,需要从另外的入口进去, associated sql query 点击
detail 展示sql 在sqprk 中解析和优化的,B站的这一模块只展示了 3和4 部分
1.analysis 2.logical optimization 3. physical planing 4. code generation
问题
1.job driver executor task 关系
物理划分: client 提交→ appmaster 申请资源启动 → driver 启动→ executor启动 → code 执行 → 资源回收释放
逻辑划分 action → job → stage → task
2.判断任务倾斜
运行时间长?
参考链接:
1.官网: ++++https://spark.apache.org/docs/3.2.0/web-ui.html#stages-tab++++