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#
全部评论

相关推荐

03-15 14:55
已编辑
门头沟学院 golang
bg:双非学院本 ACM银 go选手timeline:3.1号开始暑期投递3.7号第二家公司离职顽岩科技 ai服务中台方向 笔试➕两轮面试,二面挂(钱真的好多😭)厦门纳克希科技 搞AI的,一面OC猎豹移动 搞AIGC方向 一面OC北京七牛云 搞AI接口方向 一面OC上海古德猫宁 搞AIGC方向 二面OC上海简文 面试撞了直接拒深圳图灵 搞AIGC方向一面后无消息懒得问了,面试官当场反馈不错其他小厂没记,通过率80%,小厂杀手😂北京字节 具体业务不方便透露也是AIGC后端方向2.28约面 (不知道怎么捞的我,我也没在别的地方投过字节简历哇)3.6一面 一小时 半小时拷打简历(主要是AIGC部分)剩余半小时两个看代码猜结果(经典go问题)➕合并二叉树(秒a,但是造case造了10分钟哈哈)一天后约二面3.12 二面,让我挑简历上两个亮点说,主要说的docker容器生命周期管理和raft协议使用二分法优化新任leader上任后与follower同步时间。跟面试官有共鸣,面试官还问我docker底层cpu隔离原理和是否知道虚拟显存。之后一道easy算法,(o1空间解决 给定字符串含有{和}是否合法)秒a,之后进阶版如何用10台机加快构建,想五分钟后a出来。面试官以为45分钟面试时间,留了18分钟让我跟他随便聊,后面考了linux top和free的部分数据说什么意思(专业对口了只能说,但是当时没答很好)。因为当时手里有7牛云offer,跟面试官说能否快点面试,马上另外一家时间到了。10分钟后约hr面3.13,上午hr面,下午走完流程offer到手3.14腾讯技术运营约面,想直接拒😂感受: 因为有AIGC经验所以特别受AI初创公司青睐,AIGC后端感觉竞争很小(指今年),全是简历拷打,基本没有人问我八股(八股吟唱被打断.jpeg),学的东西比较广的同时也能纵向深挖学习,也运气比较好了哈哈可能出于性格原因,没有走主流Java路线,也没有去主动跟着课写项目,项目都是自己研究和写的哈哈
烤点老白薯:你根本不是典型学院本的那种人,贵了你这能力
查看7道真题和解析
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客企业服务