一般比较关注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日志如下所示:
对于rdd外层的输出信息,会直接打印到driver日志的stdout层,对于rdd内层的输出信息,会直接打印到task日志的stdout层。stdout的日志会在日志的最后打印,同学们使用的时候直接拉到最下面即可。
点击图1 的ApplicationMaster链接的 Tracking URL查看Exectors可分别查看driver和executor,日志在截图的最右侧
日志如下图所示:
对于错误信息:
driver和task日志均可能返回错误信息,查找“ERROR”字符串即可。大概95%以上的作业报错都会在driver日志的stderr的后半部分,大概5%的报错会在task日志的stderr的后半部分。
点击图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 中运行很慢而且出现了失败的任务
点进去具体的stage,点击失败任务查看失败的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问题。
删除这三个参数后,作业运行成功。
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 删除。