Spark UI(上)| 深入解读Spark作业的“体检报告”
- 深入了解
- 翻译
- 解释
- 总结
本文深入解读了Spark作业的“体检报告”,通过介绍Spark UI的使用方法和重要功能,帮助读者了解如何利用Spark UI来定位性能瓶颈和优化Spark应用。文章以图解的方式详细介绍了Spark UI的一级入口,包括Executors、Environment、Storage、SQL、Jobs和Stages,并重点解释了Executors和Environment页面的内容。在Executors页面中,记录了每个Executor的工作负载情况,帮助开发者判断应用中是否存在负载不均衡或数据倾斜的问题;而Environment页面则记录了各种环境变量和配置项信息,特别关注了Spark Properties,帮助开发者确认运行时的设置是否一致。通过本文的介绍,读者可以快速了解Spark UI的重要功能和使用方法,为性能调优和应用优化提供了有力的工具和指导。文章还介绍了Storage、SQL、Jobs和Stages等页面的内容,帮助读者全面了解Spark UI的各个方面,为深入学习和实际应用提供了指导和参考。整体而言,本文以清晰的图示和详细的解读,为读者提供了系统全面的Spark UI使用指南,对于需要优化Spark应用性能的开发者具有重要的参考价值。
《Spark 性能调优实战》,新⼈⾸单¥59
全部留言(14)
- 最新
- 精选
- Hiway第一问:我的理解是RDD Blocks表示的是读入数据集时的分区数,而Complete Tasks则表示整个job完成时该Executor完成的Task数。我觉得原因有二: 一是spark在划分DAG时,遇到shuffle便会断开产生新的Stage,一个task只是对应一个stage里的一个partition。 二是如果未修改spark.sql.shuffle.partitions配置,在join的时候就会自动修改为200的并行度,对应的下一个Stage也就产生了200个task 第二问:从Executors界面看,应该是两个Executor在跑。因为是分布式所以在最后write的时候,两个Executor都进行了save操作。至于为什么是两台Executor跑,应该这样计算出来的:executor 数量 = spark.cores.max/spark.executor.cores 老师,是这样吗?可以发一下你的spark-submit命令嘛?
作者回复: 不太对哈~ 标准答案是: 第一个:每个rdd经过处理后,又可能生成其他rdd,这里的tasks显示的是整个executors处理过的任务数,跟rdd cache的blocks无关。 第二个:因为代码最后一个是save,而save的mode是overwrite,save本身会有一个action,而overwrite的过程,实际上是先在临时文件夹生成数据,然后再move到目标文件夹,有一个数据移动的动作,所以Spark也把它算做了一个Action。
2021-10-26216 - onepieceJT2018不知道为什么 hive on spark的话 ui里面storage 这个面板是空白
作者回复: Storage页面是用来显示分布式数据集缓存的,比如RDD Cache、DataFrame Cache,等等。 Hive on Spark的集成中,Spark与MapReduce、Tez都是同等的地位,都是执行引擎,而且一般Hive SQL中,并不存在分布式数据集缓存的概念,所以Storage面板空空如也倒是也不足为怪~
2021-10-246 - Reiser周末回看之前的文章,看到这篇加餐有点感动。太走心了,磊哥!
作者回复: 哈哈,老弟喜欢就好~
2021-10-315 - LR.яг ®有一个别的组同事,每次启动spark都会把资源申请完,他的部分启动命令如下: --executor-memory 6G --num-executors 2000 --executor-cores 4。导致我每次都要去kill掉他的application。 请问老师,有没有什么方法可以限制启动时不允许申请这么多资源?
作者回复: 有的,不过这个限制,不是在Spark层面做的。一般在工业级,Spark一般都是用YARN来调度,YARN里面可以设置资源队列,每个队列内部,可以限制可用资源总量,不同类型的作业,比如批处理、流计算,往往是会单独创建队列来服务。所以回答你的问题,可以让运营团队设置不同的资源队列,从而达到资源隔离的目的~
2022-01-2122 - Unknown element老师我的executors页面为什么rdd blocks都是0?
作者回复: 听上去不太对,你可以加我微信,把代码和截图发给我,咱们一起看看。微信搜索“方块K”或是“rJunior”
2021-11-2341 - 保护Job Id 为 7存在的原因 是因为保存了文件嘛
作者回复: 是的~
2021-11-221 - Geek_18fe90解决了我的一块心病
作者回复: 哈哈
2021-11-151 - jerry guospark sql job的Storage页面怎么是空白的呢?是只有运行的时候才有数据吗
作者回复: 运行的时候Spark UI看8080端口;运行结束之后,在开启History server的情况下,看18080端口~
2021-10-311 - Geek_01fccd多个job公用一个executer,是按照executer纬度,计算的完成的task数吗?
作者回复: 是的,不同页面的统计维度不同,拿Executors页面为例,它的统计维度是Executors,相当于把其他维度(比如Jobs、Stages)就都抹掉了
2021-10-2021 - Sean抢个沙发先🤯🤯🤯
作者回复: 哈哈,绝对沙发~🛋️
2021-10-19