Spark Web UI及任务优化实战-了解 web ui

Spark专题

Spark Web UI

课程简介:

  1. 认识Spark Web Ui :Spark Web Ui 的基础信息介绍
  2. 使用Spark Web Ui:Spark Web Ui 从问题定位到问题解决

课程难度:⭐️⭐️

课程使用的平台:EasyData spark版本:3.3.1.2

Spark Web UI 是什么?

  • Spark Web UI 是 Apache Spark 提供的一个基于 Web 的用户界面。它是 Spark 监控和调试的重要工具,随着 Spark 应用程序的运行而自动启动,用于展示应用程序运行过程中的各种详细信息。

Spark Web UI 作用

Web UI 作用

详情

监控作业执行情况

作业进度跟踪

Spark Web UI 的 Jobs 页面可以清晰地展示每个作业的状态,包括作业的提交时间、开始时间、结束时间等信息。

阶段划分与依赖分析

Web UI 能够呈现出各个阶段之间的依赖关系。这有助于理解数据在不同阶段是如何流动和转换的。例如,在一个基于 Spark SQL 的数据分析任务中,数据的读取、过滤、聚合和输出可能分别是不同的阶段,通过查看阶段的划分和依赖

性能分析与优化

任务执行时间监测

Web UI 的 Tasks 页面可以显示每个任务的执行时间。通过分析任务执行时间的分布,可以发现性能瓶颈

资源利用评估

通过 Executors 页面可以查看执行器(Executors)的资源使用情况,包括 CPU 使用率、内存使用率等。

故障诊断与调试

任务失败原因查找

当任务出现失败时,Spark Web UI 能够提供详细的错误信息。快速定位故障原因,例如是由于数据格式错误、OOM、网络故障等等

数据倾斜分析

通过查看各个任务的数据输入量和处理时间,可以发现是否存在数据倾斜现象。

Spark Web UI 模块

模块

功能

Jobs

  • 提供 Spark 应用程序中所有作业的整体视图,用于监控作业的执行进度、状态和性能。通过这个模块可以了解作业的基本信息,如提交时间、持续时间等,还能查看作业内各阶段的划分和依赖关系。

Stages

  • 用于深入分析每个阶段的性能和数据处理情况。可以查看阶段的输入输出数据量、处理的记录数、任务并行度等信息,帮助用户发现性能瓶颈和优化数据处理流程。

Storage

  • 用于展示存储情况,能呈现 RDD、DataFrame 等存储对象的存储级别;监控数据特性,可查看存储对象的数据大小,明确内存、磁盘占用情况;管理缓存相关,能呈现缓存状态,如是否成功、大小等,还统计缓存命中率,方便判断缓存策略有效性,据此可优化存储及缓存方面的设置。

environment

  • 提供全面的环境信息展示。它清晰呈现出 Spark 应用运行时所处的各类环境参数,包括但不限于 Spark 自身的版本号、所依赖的 Java 版本、集群的配置详情(如节点数量、内存分配等)、系统相关设置

Executors

  • 展示Executor的内存使用情况和 CPU 核数的占用情况;状态查看,能看到执行器是处于运行、空闲还是故障状态。

SQL/DaraFrame

  • 展示 SQL 查询和 DataFrame 操作的信息。能呈现 SQL 的执行计划,包括逻辑与物理计划,帮助理解查询处理方式。对于 DataFrame,可查看数据转换细节。

通过Sql 看 UI

select
  *
from
  mammut_user.dws_tradels_order_cus_1d
where
  dt = '2024-03-26'

Jobs模块

在提交spark任务运行后,点击日志链接,Jobs展示的是整个spark应用任务的job整体信息

Jobs

User

hadoop账号,spark任务提交的用户,用以进行权限控制与资源分配

Total Uptime

Spark 应用从启动到当前时刻的持续运行时间。它就像一个计时器,记录了应用在集群环境中的存活时长

Scheduling Model

Job的调度模式, Spark 用于安排任务执行顺序和资源分配的策略。分为FIFO(先进先出)和FAIR(公平调度)

Completed Jobs

执行完成的Job

Active Jobs

正在执行的Job

Event Timeline

Event Timeline 提供了一个时间序列上的任务执行视图。Job执行时间线和Exector的增加和删除事件时间线

Job details

点击某个job,查看该job的详细信息

Status

job的运行状态:running、succeeded、 failed

Submitted

Job提交时间

Duration

Job执行时长

Associated SQL Query

关联的SQL模块的query id

Job Group

任务组。通过 Job Group,用户可以对一组作业进行统一的操作,可以为不同的 Job Group 分配不同的资源配额

Event Timeline

当前Job执行时间线和Exector的增加和删除事件时间线

DAG Visualization

DAG可视化展示, 当前Job所包含的所有stage信息

Completed Stages

执行完成的stages信息

Skipped Stages

跳过执行的stages信息

为什么stage被跳过?

skipped的stage代表是之前被其他stage执行过并落盘了,并不需要重新计算,可以直接使用之前的结果。

Stage模块(重点)

Stage概览

点击Stages模块,可进入到Stage界面

Completed Stages

所有任务的stages信息

Skipped Stages

跳过执行的stages信息

Stage详细(重点)

在Stages页点击进入某个stage后,可以查看某一stage的详细信息:

Resource Profile Id

用于标识资源配置文件的唯一标识符,定义 Spark 应用在运行过程中所使用的资源分配方式。例如: 包括了诸如每个执行器(Executor)分配多少内存、多少 CPU 核心数等资源分配细节

Total Time Across All Tasks

当前stage中所有task总花费的时长

Locality Level Summary

数据本地化方式和数量

Associated Job Ids

stage关联的job id

DAG Visualization

DAG可视化图,表示当前stage中包含的详细的tranformation操作流程图

Event Timeline

同之前

Summary Metrics for x Completed Tasks

已完成的Task的执行汇总情况:(task层面)

  • Duration:task持续时间
  • GC Time:task gc消耗时间
  • Output Write Time:输出写时间
  • Output Size/ Records : 输出数量大小,条数。
  • Shuffle HDFS Read Time: shuffle中间结果从hdfs读取时间
  • Shuffle Read Size/Records: shuffle 读入数据大小/条数
  • Shuffle Spill Time: shuffle 中间结果溢写时间。
  • Shuffle spill (memory):shuffle 溢写使用的内存大小。
  • Shuffle spill (disk):shuffle 溢写使用的硬盘大小。

Aggregated Metrics by Executor

task运行的指标信息按executor做聚合后的统计信息

Output Size / Records

输出的数据字节数大小/记录条数

Input Size / Records

输入的数据字节数大小/记录条数

Shuffle Write

有多少数据Shuffle写,一般是map task写数据,也可以是reduce task写数据。为下一个依赖的stage提供输入数据,shuffle过程中通过网络传输的数据字节数/记录条数

Shuffle read

表示有多少数据Shuffle读, 该项值有内容表示为reduce task

Tasks

当前stage所有task信息

数据本地化:数据离计算它的代码有多近。基于数据距离代码的距离,有几种数据本地化级别:

  • PROCESS_LOCAL :数据和计算它的代码在同一个Executor JVM进程中。
  • NODE_LOCAL : 数据和计算它的代码在同一个节点,但不在同一个进程中,比如在不同的executor进程中,或者是数据在HDFS文件的block中。因为数据需要在不同的进程之间传递或从文件中读取。分为两种情况,第一种:task 要计算的数据是在同一个 worker 的不同 Executor 进程中。第二种:task 要计算的数据是在同一个 worker 的磁盘上,或在 HDFS 上恰好有 block 在同一个节点上。如果 Spark 要计算的数据来源于 HDFS 上,那么最好的本地化级别就是 NODE_LOCAL。
  • NO_PREF : 从任何地方访问数据速度都是一样,不关心数据的位置。
  • RACK_LOCAL : 机架本地化,数据在同一机架的不同节点上。需要通过网络传输数据以及文件 IO,比NODE_LOCAL 慢。情况一:task 计算的数据在 worker2 的 EXecutor 中。情况二:task 计算的数据在 work2 的磁盘上。

越往前的级别等待时间应该设置的长一点,因为越是前面性能越好

Storge模块

用于展示存储情况,能呈现 RDD、DataFrame 等存储对象的存储级别

Environment模块

提供全面的环境信息展示。它清晰呈现出 Spark 应用运行时所处的各类环境参数

概览信息

Runtime Information

Spark Properties

Resource Profiles

Hadoop Properties

System Properties

Classpath Entries

Executor模块

executors页面展示了executor和driver的一些统计信息和明细信息,汇总信息包括内存、磁盘、cpu的使用量,任务执行时间、GC时间,成功、失败、完成的task数量,以及输入输出的数据量等内容

SQL模块(重点)

完整的展示了任务的DAG过程,跟Stages结合可以对应该Stages与SQL代码的关系,也就是这是在运行哪一串代码,用于定位数据倾斜的核心功能之一

SQL算子和 UI SQl关键词对应关系
  • WholeStageCodegen:全阶段代码生成,把一个stage里的算子进行了整合、优化
  • Filter:where
  • Project:select 后的字段
  • Exchange:shuffle
  • Sort:排序,一般在Exchange之后
  • CustomShuffleReader:定制化shuffle,存在该算子说明启用了AE
  • HashAggregate:group by (hash聚合)
  • SortAggregate:group by(sort聚合,内存不足会采用sort兜底)
  • Expand:对于select中存在多个distinct 或 group by id,name with cube会存在该算子
  • Generate:explode函数
  • ColumnarToRow:spark内部优化,向量化读
  • SortMergeJoin(skew=true):join方式是SMJ,并且命中了AE自动处理倾斜的逻辑

#数据人offer决赛圈怎么选##数据人的面试交流地##数据分析##大数据##java#
全部评论

相关推荐

1. 如何在嵌入式系统中实现蓝牙通信?2. 在STM32中使用CAN总线进行数据传输?3. 嵌入式系统中如何实现电机的闭环控制?4. 如何在嵌入式系统中实现图像处理算法?5. 在FreeRTOS中使用消息队列进行任务间通信?6. 嵌入式系统中如何实现温度补偿?7. 如何在STM32中配置和使用SD卡?8. 在RT-Thread中实现多线程的优先级调度?9. 嵌入式系统中如何实现数据的实时传输?10. 如何在STM32中实现USB设备的通信?11. 嵌入式系统中如何实现音频信号的录制与播放?12. 在FreeRTOS中实现任务的延时机制?13. 如何在嵌入式系统中实现WIFI模块的配置?14. 在STM32中使用DMA进行串口数据传输?15. 嵌入式系统中如何实现电源故障检测?16. 如何在RT-Thread中实现文件系统的挂载与卸载?17. 嵌入式系统中如何实现数据的实时监控?18. 在STM32中配置和使用触摸屏?19. 如何在嵌入式系统中实现网络协议栈?20. 在FreeRTOS中使用时间片轮转调度算法?21. 嵌入式系统中如何实现GPS数据的解析?22. 如何在STM32中配置和使用RTC的闹钟功能?23. 嵌入式系统中如何实现图形用户界面(GUI)?24. 在RT-Thread中实现互斥锁的使用?25. 如何在嵌入式系统中实现数据的备份与恢复?26. 在STM32中配置和使用OLED显示屏?27. 嵌入式系统中如何实现电流监测与控制?28. 如何在FreeRTOS中实现任务的优先级反转防护?29. 嵌入式系统中如何实现多种传感器的数据融合?30. 在STM32中实现PWM信号的频率调节?我面试看的是大佬的面经,链接放下边了  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
1
分享
牛客网
牛客企业服务