零基础入门 Spark
吴磊
前 FreeWheel 机器学习研发经理
19171 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
零基础入门 Spark
15
15
1.0x
00:00/00:00
登录|注册

21|Spark UI(上):如何高效地定位性能问题?

你好,我是吴磊。
到目前为止,我们完成了基础知识和 Spark SQL 这两个模块的学习,这也就意味着,我们完成了 Spark 入门“三步走”中的前两步,首先恭喜你!在学习的过程中,我们逐渐意识到,Spark Core 与 Spark SQL 作为 Spark 并驾齐驱的执行引擎与优化引擎,承载着所有类型的计算负载,如批处理、流计算、数据分析、机器学习,等等。
那么显然,Spark Core 与 Spark SQL 运行得是否稳定与高效,决定着 Spark 作业或是应用的整体“健康状况”。不过,在日常的开发工作中,我们总会遇到 Spark 应用运行失败、或是执行效率未达预期的情况。对于这类问题,想找到根本原因(Root Cause),我们往往需要依赖 Spark UI 来获取最直接、最直观的线索。
如果我们把失败的、或是执行低效的 Spark 应用看作是“病人”的话,那么 Spark UI 中关于应用的众多度量指标(Metrics),就是这个病人的“体检报告”。结合多样的 Metrics,身为“大夫”的开发者即可结合经验来迅速地定位“病灶”。
今天这一讲,让我们以小汽车摇号中“倍率与中签率分析”的应用(详细内容你可以回顾第 13 讲)为例,用图解的方式,一步步地去认识 Spark UI,看一看它有哪些关键的度量指标,这些指标都是什么含义,又能为开发者提供哪些洞察(Insights)?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何通过Spark UI高效地定位性能问题。首先,文章强调了Spark Core与Spark SQL的重要性,指出它们的稳定与高效运行对整个Spark应用至关重要。接着,文章详细介绍了Spark UI的一级入口,包括Executors、Environment、Storage、SQL、Jobs和Stages等页面,以及它们所记录的度量指标和功能。在具体介绍Executors页面时,文章提到了如何通过监控每个Executor的资源消耗来判断应用中是否存在数据倾斜的隐患。此外,文章还强调了Spark Properties的重要性,可以帮助开发者确认运行时的设置是否一致,从而排除因配置项设置错误而导致的稳定性或性能问题。整篇文章通过图文并茂的方式,详细介绍了Spark UI的各个入口和页面,以及它们对于开发者定位性能问题的重要性和实用性。文章内容丰富,涉及的Metrics纷繁而又复杂,需要读者结合日常的开发去多多摸索与体会。整体而言,本文为读者提供了一份全面而实用的Spark性能问题定位指南。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《零基础入门 Spark》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 小李
    1、我想数量不一致是由于Executors在处理这个application下的所有job(一个job由action算子来触发,每个job又会根据shuffle情况划分出多个stage,每个stage中又会划分出多个task,再根据taskScheduler分配到各个Excecutor)得出来的Complete Tasks。

    作者回复: 是的,就是这个意思~

    2021-11-01
    8
  • LHF
    第一个:每个rdd经过处理后,又可能生成其他rdd,这里的tasks应该是显示整个executors处理过的任务数,跟rdd的blocks无关。 第二个:因为代码最后一个是save,会生成一个save的action

    作者回复: 正解,满分💯

    2021-10-28
    3
    4
  • 我爱夜来香
    老师,请问下4040端口和8080端口有什么区别和联系啊?

    作者回复: 没什么区别和联系哈~ spark.ui.port这个配置项,用来配置Spark UI服务端口,只要设置为节点上空闲的端口即可

    2022-01-20
    2
    2
  • Geek_d4ccac
    老师好!我有一个疑问,所以这一节准备工作部分的code example并不是后面spark ui里跑的code么? 我这边显示最后是result.collect。。。

    作者回复: Code是一致的~ 当然,变量命名可能多少会有些出入,这个主要是因为跑代码的时间,和整理文稿的时间,中间可能隔了一段时间,有些细节没有完全对上。但是这个不影响正文中说的那些关键内容(如指标Metrics、DAG图解,等等)的解释和释义哈~

    2021-11-03
  • Geek_frank
    这个可以禁用掉吗,感觉这块也挺占资源的。在开发环境调试的时候可以用用。产线这块最好禁掉
    2023-08-09归属地:上海
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部