前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >借助Spark Web UI排查Spark任务

借助Spark Web UI排查Spark任务

原创
作者头像
sansan
修改2023-10-11 20:50:32
7400
修改2023-10-11 20:50:32
举报
文章被收录于专栏:屌丝程序媛屌丝程序媛

Yarn Application

图 1
图 1

一般比较关注YarnApplicationState 、Logs、ApplicationMaster。

YarnApplicationState 枚举了ApplicationMaster的各个状态,包含:RUNNING、ACCEPTED、FAILED、FINISHED、KILLED、NEW等状态,主要有“accepted”和“running”两种状态。如果一直处理accepted状态,证明当前您的资源队列没有可供资源来运行您的作业。作业失败后,日志也会返回错误,yarn层面的错误会在此显示。

日志

yarn服务有resource manager和node manager组成,在yarn上运行的任务,由一个ApplicationMaster和多个container组成。

Spark 运行由一个driver和多个executor组成,Spark on Yarn时,Spark的driver和executor分别运行在yarn的container中。

点击图1红框下方的日志链接可查看driver日志如下所示:

yarn logs
yarn logs

对于rdd外层的输出信息,会直接打印到driver日志的stdout层,对于rdd内层的输出信息,会直接打印到task日志的stdout层。stdout的日志会在日志的最后打印,同学们使用的时候直接拉到最下面即可。

点击图1 的ApplicationMaster链接的 Tracking URL查看Exectors可分别查看driver和executor,日志在截图的最右侧

日志如下图所示:

driver 日志
driver 日志
exector日志
exector日志

对于错误信息:

driver和task日志均可能返回错误信息,查找“ERROR”字符串即可。大概95%以上的作业报错都会在driver日志的stderr的后半部分,大概5%的报错会在task日志的stderr的后半部分。

Spark Web UI组成

点击图1 中的 ApplicationMaster 的 Track URL可以查看许多信息如下:

Jobs:作业整体状况,可以观察各个Stage的运行情况。job的划分通常以action操作区分。如果不懂action和transformation操作的,请查阅文档:http://spark.apache.org/docs/latest/rdd-programming-guide.html#transformations

Stages:各个Stages的运行情况,非常重要。可以理解为一个job包含多个stage。每个stage下可以查看所有task的运行情况,可以观察数据倾斜现象。

Storage:持久化数据的存储情况,比如说cache,persist。

Environment:程序的环境变量,主要用来查看参数有没设置对。

Executors:标识各个executor的健康状况,包括内存,gc,任务情况,shuffle情况等,非常重要。同时包含了driver节点和所有executor节点的日志。

SQL:Spark sql才有,展示sql的执行情况。

Streming:Spark streaming作业才有,展示每个阶段的执行情况。

排查方式

万能公式:先看job,再看stage,再看task。executors最后清场收尾。

观察到Job 中运行很慢而且出现了失败的任务

Job失败的任务
Job失败的任务

点进去具体的stage,点击失败任务查看失败的task日志

Task 状态查看
Task 状态查看
失败Task 的日志
失败Task 的日志

上图失败Task详细日志可以参考第二节中Exextors日志查看,根据失败Task ip查询即可。

常见错误

1、数据不均衡问题

spark程序效率慢或者内存溢出的大多数原因都是partition内的数据量不合理导致的,业务同学需要对自己的rdd根据经验做合理的repartition或者coalesce操作。

案例1:

repartition效率低,一直卡在最后一步,初步怀疑是数据倾斜问题。

观察卡住的job对应的Stage页面情况,发现数据倾斜问题严重。

数据倾斜
数据倾斜

解决办法:

http://www.jasongj.com/spark/skew/

https://blog.csdn.net/lulynn/article/details/51498596

2、参数配置问题

可以参考官方文档(https://spark.apache.org/docs/2.0.2/configuration.html)的参数配置来填写,杜绝拷贝其他作业的参数,在不了解的情况下宁愿不要配任何参数。参数配置不当,经常是适得其反的作用。

案例1:

作业跑不出来,一直在最后一步卡住。

查看用户配置的参数发现红框的三项导致用户数据缓存内存变小,导致oom问题。

删除这三个参数后,作业运行成功。

spark参数配置
spark参数配置

参考资料

1、 Spark官方参数指南:https://spark.apache.org/docs/2.0.2/configuration.html

2 、Mastering Apache Spark:

https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-webui.html

3、Spark Web UI 详解:

https://blog.csdn.net/qq_27639777/article/details/81069893

4、Spark程序运行常见错误解决方法以及优化:

http://bigdata.51cto.com/art/201704/536499.htm

5、Spark性能优化指南:

https://tech.meituan.com/spark_tuning_basic.html

https://tech.meituan.com/spark_tuning_pro.html

6、数据倾斜的若干种解决方法

http://www.jasongj.com/spark/skew/

https://blog.csdn.net/lulynn/article/details/51498596

7、性能调优基础篇

https://tech.meituan.com/2016/04/29/spark-tuning-basic.html

8、性能调优高级篇

https://tech.meituan.com/2016/05/12/spark-tuning-pro.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Yarn Application
  • 日志
  • Spark Web UI组成
  • 排查方式
  • 常见错误
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档