《Spark官方文档》Web UI -学习笔记

Apache Spark 提供了一套 Web 用户界面(UI),您可以使用它们来监视 Spark 集群的状态和资源消耗。

如:

一、Jobs 页面

Jobs 页面展示了Spark应用程序中所有作业的摘要信息以及每个作业的详细信息页。

摘要页面显示整体信息,例如所有作业的状态、持续时间和进度以及整个事件的时间线。

点击某个job将进入该job的详细信息页面,会进一步显示时间时间线、DAG可视化效果以及作业的所有stages。

Jobs 页中显示的信息是:

  • User: 当前Spark任务提交的用户
  • Total uptime: 自Spark程序启动以来运行的时间
  • Scheduling mode:  application中task任务的调度策略,由参数spark.scheduler.mode来设置,可选的参数有FAIR和FIFO,默认是FIFO。这与yarn的资源调度策略的层级不同,yarn的资源调度是针对集群中不同application间的,而spark scheduler mode则是针对application内部task set级别的资源分配,不同FAIR策略的参数配置方式与yarn中FAIR策略的配置方式相同。
  • Active Jobs: 正在运行的Job的基本信息。
  • Completed Jobs: 已完成Job的基本信息,如想查看某一个Job的详细情况,可点击对应Job进行查看。
  • Event Timeline:在application应用运行期间,Job和Exector的增加和删除事件进行图形化的展现。这个就是用来表示调度job何时启动何时结束,以及Excutor何时加入何时移除。我们可以很方便看到哪些job已经运行完成,使用了多少Excutor,哪些正在运行。
  • Details of jobs grouped by status: 显示作业的详细信息,包括作业 ID、描述(带有指向详细作业页面的链接)、提交时间、持续时间、阶段摘要和任务进度条

Job默认都是串行提交运行的,如果Job间没有依赖,可以使用多线程并行提交Job,实现Job并发

单击特定作业时,可以看到该作业的详细信息。

 

Jobs detail

在Jobs页面点击进入某个Job之后,可以查看某一Job的详细信息:

  • Staus: 展示Job的当前状态信息 (running, succeeded, failed)。
  • Active Stages: 正在运行的stages信息,点击某个stage可进入查看具体的stage信息(active, pending, completed, skipped, failed)。
  • Associated SQL Query: 链接到此作业的 sql 页面
  • Pending Stages: 排队的stages信息,根据解析的DAG图stage可并发提交运行,而有依赖的stage未运行完时则处于等待队列中。
  • Completed Stages: 已经完成的stages信息。
    Event Timeline: 展示当前Job运行期间stage的提交与结束、Executor的加入与退出等事件信息。
  • DAG Visualization: 当前Job所包含的所有stage信息(stage中包含的明细的tranformation操作),以及各stage间的DAG依赖图。DAG也是一种调度模型,在spark的作业调度中,有很多作业存在依赖关系,所以没有依赖关系的作业可以并行执行,有依赖的作业不能并行执行。

 List of stages 信息:

  • Stage ID
  • Description:stage详细信息(可点击)
  • Submitted:提交的时间戳
  • Duration:阶段的运行时间
  • Tasks progress bar:任务进度条
  • Input: 此阶段从存储读取的字节数
  • Output: 此阶段写入存储的字节数
  • Shuffle read: 总shuffle字节数和读取的记录数,包括本地读取的数据和从远程执行程序读取的数据
  • Shuffle write: 写入磁盘的字节数和记录,以便下一个stage的shuffle阶段读取

二、Stages 页面

 

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

  • Total time across all tasks: 当前stage中所有task花费的时间和。
  • Locality Level Summary: 不同本地化级别下的任务数,本地化级别是指数据与计算间的关系(PROCESS_LOCAL进程本地化:task与计算的数据在同一个Executor中。NODE_LOCAL节点本地化:情况一:task要计算的数据是在同一个Worker的不同Executor进程中;情况二:task要计算的数据是在同一个Worker的磁盘上,或在 HDFS 上,恰好有 block 在同一个节点上。RACK_LOCAL机架本地化,数据在同一机架的不同节点上:情况一:task计算的数据在Worker2的Executor中;情况二:task计算的数据在Worker2的磁盘上。ANY跨机架,数据在非同一机架的网络上,速度最慢)。
  • Input Size/Records: 输入的数据字节数大小/记录条数。
  • Shuffle Write: 为下一个依赖的stage提供输入数据,shuffle过程中通过网络传输的数据字节数/记录条数。应该尽量减少shuffle的数据量及其操作次数,这是spark任务优化的一条基本原则。
  • DAG Visualization: 当前stage中包含的详细的tranformation操作流程图。
  • Metrics: 当前stage中所有task的一些指标(每一指标项鼠标移动上去后会有对应解释信息)统计信息。
  • Event Timeline: 清楚地展示在每个Executor上各个task的各个阶段的时间统计信息,可以清楚地看到task任务时间是否有明显倾斜,以及倾斜的时间主要是属于哪个阶段,从而有针对性的进行优化。
  • Aggregated Metrics by Executor: 将task运行的指标信息按excutor做聚合后的统计信息,并可查看某个Excutor上任务运行的日志信息。
  • Tasks: 当前stage中所有任务运行的明细信息,是与Event Timeline中的信息对应的文字展示(可以点击某个task查看具体的任务日志)。

Stage detail

阶段详细信息页面以所有任务的总时间、位置级别摘要随机读取大小/记录和关联的作业 ID 等信息开头。

此阶段的有向无环图 (DAG) 还有一个可视化表示形式,其中顶点表示 RDD 或数据帧,边表示要应用的操作。节点在 DAG 可视化效果中按操作范围分组,并使用操作范围名称(BatchScan、WholeStageCodegen、Exchange 等)进行标记。值得注意的是,"全阶段代码生成"操作也使用代码生成 ID 进行注释。对于属于 Spark DataFrame 或 SQL 执行的阶段,这允许将阶段执行详细信息交叉引用到报告 SQL 计划图和执行计划的 Web-UI SQL 选项卡页中的相关详细信息。 

四、Storage 页面

storage页面能看出application当前使用的缓存情况,可以看到有哪些RDD被缓存了,以及占用的内存资源。如果job在执行时持久化(persist)/缓存(cache)了一个RDD,那么RDD的信息可以在这个选项卡中查看。

例如:

scala> import org.apache.spark.storage.StorageLevel._
import org.apache.spark.storage.StorageLevel._

scala> val rdd = sc.range(0, 100, 1, 5).setName("rdd")
rdd: org.apache.spark.rdd.RDD[Long] = rdd MapPartitionsRDD[1] at range at <console>:27

scala> rdd.persist(MEMORY_ONLY_SER)
res0: rdd.type = rdd MapPartitionsRDD[1] at range at <console>:27

scala> rdd.count
res1: Long = 100                                                                

scala> val df = Seq((1, "andy"), (2, "bob"), (2, "andy")).toDF("count", "name")
df: org.apache.spark.sql.DataFrame = [count: int, name: string]

scala> df.persist(DISK_ONLY)
res2: df.type = [count: int, name: string]

scala> df.count
res3: Long = 3

运行上述示例后,我们可以在storage页面中找到两个RDD。提供存储级别、分区数和内存开销等基本信息。请注意,新持久化的 RDD 或数据帧在持久化之前不会显示在storage页面中。要监视特定的 RDD 或数据帧,请确保已触发操作操作。

Storage Detail

点击某个RDD即可查看该RDD缓存的详细信息,包括缓存在哪个Executor中,使用的block情况,RDD上分区(partitions)的信息以及存储RDD的主机的地址。

您可以单击RDD名称"rdd"来获取数据持久性的详细信息,例如集群上的数据分布。

五、Environment 页面

Environment选项卡提供有关Spark应用程序(或SparkContext)中使用的各种属性和环境变量的信息。用户可以通过这个选项卡得到非常有用的各种Spark属性信息,而不用去翻找属性配置文件。

六、Executors 页面

Executors页面提供了关于内存、CPU核和其他被Executors使用的资源的信息。这些信息在Executor级别和汇总级别都可以获取到。一方面通过它可以看出来每个excutor是否发生了数据倾斜,另一方面可以具体分析目前的应用是否产生了大量的shuffle,是否可以通过数据的本地性或者减小数据的传输来减少shuffle的数据量

 

 

  • Summary: 该application运行过程中使用Executor的统计信息。
  • Executors: 每个Excutor的详细信息(包含driver),可以点击查看某个Executor中任务运行的详细日志。 

不仅提供资源信息(每个执行程序使用的内存量、磁盘和内核量),还提供性能信息(GC 时间和shuffle信息)。

 单击执行程序 0 的"stderr"链接,在其控制台中显示详细的标准错误日志

 单击执行程序 0 的"Thread Dump"链接将显示执行程序 0 上 JVM 的线程转储,这对于性能分析非常有用。

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark Web UI(用户界面)是一个用于监控和管理Apache Spark应用程序的Web界面。它提供了可视化的方式来查看Spark作业的执行情况、任务的进度以及资源使用情况等重要信息。 Spark Web UI的主要功能包括以下几个方面: 1. 集群总览:显示整个Spark集群的概要信息,如作业和任务的数量、已使用的内存和CPU等。 2. 作业视图:显示已提交的作业列表,包括作业的ID、名称、启动时间、运行时长等信息。用户可以通过该视图来查看作业的执行进度,并了解作业的整体状况。 3. 任务视图:显示作业中各个任务的详细信息,包括任务的ID、状态、运行时间、执行器等。用户可以通过该视图来跟踪任务的执行情况,以及查看任务的日志和异常信息。 4. 阶段视图:展示作业中各个阶段(stage)的信息,包括阶段的ID、名称、状态、任务数等。用户可以通过该视图来了解每个阶段的执行情况和性能瓶颈,从而进行调优和优化。 5. 存储视图:显示Spark应用程序中的缓存数据的详细信息,包括缓存的名称、类型、大小等。用户可以通过该视图来监控缓存数据的使用情况,并决定是否需要进行缓存的清理或释放。 通过Spark Web UI,用户可以实时地监控Spark应用程序的执行情况,并从中获取有价值的性能和调优信息。同时,它也为开发人员提供了一个方便的界面来跟踪任务和作业的执行状态,以便于及时发现和解决问题。总之,Spark Web UI是一个强大而易用的工具,帮助用户更好地理解和管理他们的Spark应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值