Spark Streaming 监控UI详解

本文作为学习总结,文中引用到其他作者很多知识,对原作者表示感谢。

Table of Contents

Spark 基本概念

Spark 监控的三个阶段

Spark Driver 阶段

Spark Executor阶段

Spark Streaming阶段


Spark 基本概念

Job

job是application的组成单位。 A job is triggered by an action, like count() or saveAsTextFile(). Click on a job to see information about the stages of tasks inside it. 一个 job,就是由一个 rdd 的 action 触发的动作,可以简单的理解为,当你需要执行一个 rdd 的 action 的时候,会生成一个 job.
 

Stage

stage 是 job 的组成单位,就是说,一个 job 会被切分成 1 个或 1 个以上的 stage,然后各个 stage 会按照执行顺序依次执行。job 根据Spark的shuffle过程来切分 stage,如某stage有2个shuffle过程,它就被切分成3个stage.
 

Task

A unit of work within a stage, corresponding to one RDD partition。即 stage 下的一个任务执行单元。“一般来说,一个 rdd 有多少个 partition,就会有多少个 task,因为每一个 task 只是处理一个 partition 上的数据。”

 

Spark 监控的三个阶段

Spark Streaming 从提交job到cluster,到正式运行,需要分三个阶段进行监控和调试。他们分别是Driver阶段,Executor阶段,Streaming阶段。

 

Spark Driver 阶段

主要是submit job到集群上,这个时候主要是检查driver上的日志,发现dependency 和程序启动bug的阶段。用到的主要是日志(spark.log, std.out, std.err) 和 UI 里 Environment 页。

Environment:环境信息、各种各样的参数信息, 最常用的就是看已经上传的jar包。可以在这里看到实际spark.ui.port是多少。

 

 

Spark Executor阶段

该阶段程序提交到driver上已经通过,常用的编译依赖已经解决。这个阶段主要发现的是运行时依赖问题,Executor上第一次执行时出现的错误和内存使用情况。

Jobs: job列表,显示每个作业的时间信息以及共有多少stage以及task,可以链接到具体的stages页面,这个页面需要重点关注每个job的时间,以及是否有作业有大量的失败的任务。

jobs

 

Stages :Stage列表,显示stage的输入、输出以及Shuffle读写的数据量,并且可以链接到每一个task的执行情况,包括执行次数,task状态,locality级别、GC时间,输入、输出数据量等等,这里面需要重点关注task的执行时间,gc时间,以及各task花费时间相差是否不大。点击这里的链接,直接进入所属的task列表页面。

locality_level按优先级高低排:PROCESS_LOCAL,NODE_LOCAL,NO_PREF,RACK_LOCAL,ANY。也就是最好在同个进程里,次好是同个node(即机器)上,再次是同机架,或任意都行

 

Executors :executor列表,在这里查看到各个executor输出的日志,如下图就是一个实际程序的截图,可以通过stdout/stderr查看日志。可以查看executor 内存使用情况,内存分配是否合理。Thread Dump 如果需要。

exector上的输出日志,仅能看System.out, System.err。我们通过log日志系统输出的日志在spark.log里。需要在点开的地址栏里把stdout  ==> spark.log.

http://northeast.internal:8042/node/containerlogs/container_e23_1563172355610_138956_01_000002/yarn/stdout?start=-4096

http://northeast.internal:8042/node/containerlogs/container_e23_1563172355610_138927_01_000002/yarn/spark.log/?start=0

 

Spark Streaming阶段

Streaming job已经正式运行起来了,跑了几个batch以后,需要监控的是 batch data size, kafka partition offset, process time, schedule delay等问题。

streaming: 显示每个批次有多少数据,总共处理了多少批次,每个批次处理花费的时间,是否有批次延迟等信息,如下图是一个正运行的streaming程序的监控页面。

 

batch data: 查看每个batch处理的数据量大小,判断接入kafka是否正常。查看kafka partition 数据发现是否存在kafka数据分布不均情况。

process time: 查看用时较长的batch处理时间,分析程序性能。batch size 是否合理等。

重点需要关注的是active batches,如果active batches下面的批次大于1则证明有延迟批次
streaming statistics:中显示的事件的数据接收、调度延迟、处理时间,合计延迟的统计信息。
completed batches :已完成批次(只显示是最近)的信息,可以通过链接进行具体的Job中。如果发现某批次处理时间有异常,可以通过链接看到具体的Job信息,进而查看到stage,最终追踪到具体的task中,比如下图就是“Stage”标签中。

 

参考文献:

http://spark.apache.org/docs/latest/web-ui.html

https://www.jianshu.com/p/3946cb96f382

https://blog.csdn.net/sinat_34763749/article/details/80944922

 


 

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值