Spark UI (1) - Jobs页面
接上文Spark UI基础介绍,以一段sql为例介绍Jobs页面的内容:
select t1.dt,
t2.cooperation_type,
t1.poi_id,
t1.diff_qty
from mart_xxx.fact_sc_gms_diff_report t1
left join mart_xxx.dim_op_poi t2
on t1.grid_poi_id=t2.poi_id
where t1.dt = '20220410'
在Jobs页面可以看到上面的SQL生成了3个job, 该页面还有一个Event Timeline的链接, 点击可以看到作业的时间轴。
1.Event Timeline
点击Event Timeline后可以看到以下信息:时间线会显示Executor加入和退出的时间点, 以及job执行的起止时间.
2.job详情页面
点击job描述里的链接就可以进入对应job的详情页面, 首先看job0:job详情页面会展示这个job包含了哪些stage, 以及stage执行信息.
另外点击DAG Visualization 可以看到job的执行计划也就是DAG图:下图即job0对应的stage0及job1对应的stage1.
然后在看下触发job2的DAG图:
可以看到stage2和stage3被跳过(skipped)了。
为啥可以被跳过? 原因是spark shuffle的数据会写到磁盘固化, 当上游stage(stage2)和之前执行过的stage(stage0)相同时, 可以直接使用之前的结果, 所以stage2可以被跳过。
FAQ:
1.上游stage的Shuffle Write等于下游stage的 Shuffle Read
这个算常识, 可以在作业执行时通过上游stage的Shuffle Write量 减去 下游stage的Shuffle Read量判断执行进度. 另外还可以通过这个常识判断task是否有数据倾斜, 例如还剩1个task没执行完, 但是Shuffle Read量与上游Shuffle Write量相差很大, 那么这个正在执行的task很有可能是数据倾斜的task。
2.job提交间隔较大, 是什么情况
Spark默认的job调度模式是FIFO, 基本上前一个job执行完就会提交下一个job. 但是也有两个job间隔比较久的例子. 请注意:Spark UI只展示job信息, 如果Driver在前一个job执行完成后执行其他代码, 或者在对下一个job的提交进行预计算, 这部分耗时是不会显示在UI上的, 建议通过Driver的log判断具体原因。
相关文章
- Spark UI (2) - Stages页面
- Spark快速入门系列(三)深入理解RDD
- Hadoop Spark太重,esProc SPL很轻
- Spark SQL源码研读系列
- spark RDD
- 跨内外网远程操作Spark
- 常用spark优化参数
- 借助IBCS虚拟专线优化Apache Spark集群性能
- Spark集群基础概念 与 spark架构原理详解大数据
- spark 性能调优(一) 性能调优的本质、spark资源使用原理、调优要点分析详解大数据
- 倾情大奉送–Spark入门实战系列详解大数据
- Spark源码分析之spark-submit详解大数据
- Spark内存管理之钨丝计划详解大数据
- 界面优化Linux UI界面优化提升体验(linux的ui)
- TensorFlow 与 Apache Spark 结合:雅虎开源“TensorFlowOnSpark”
- Spark构建Redis数据按照高效实时处理(spark连接redis)
- 发挥Spark火花结合Redis助力大数据分析(spark结合redis)
- 基于Spark实现Redis数据库查询(spark查询redis)