spark性能调优的总结

举报
芥末拌个饭吧 发表于 2022/11/11 17:26:58 2022/11/11
【摘要】 随着数据的不断膨胀,科技的持续进度,我们记录数据的方式也在不断变化。从最早的甲骨文,到纸质记录,再到如今用磁盘硬件收集。再说到大数据,现在普遍使用的是hadoop和spark。而spark因其优越的性能优势,已经在逐步取代hadoop了。 spark固然好用,但其学习成本较高,配置项繁多。我们要用好spark,需要知道它的原理及特性。今天就来讲讲spark的性能调优方向。

前言

随着数据的不断膨胀,科技的持续进度,我们记录数据的方式也在不断变化。从最早的甲骨文,到纸质记录,再到如今用磁盘硬件收集。再说到大数据,现在普遍使用的是hadoop和spark。而spark因其优越的性能优势,已经在逐步取代hadoop了。

spark固然好用,但其学习成本较高,配置项繁多。我们要用好spark,需要知道它的原理及特性。今天就来讲讲spark的性能调优方向。

性能调优的本质

当我们写完spark任务代码后,需要分析其瓶颈,然后优化,保证能更好的利用spark的性能。 spark的性能调优本质,可总结为:

  • spark的性能调优不是一步到位的,因其涉及分布式机器的资源。补了一个短板,有可能会对其他模块带来新的问题
  • 性能调优是否有效,取决于你针对的是哪方面的提升。也许对于空间优化很好;针对时间优化不好。
  • 性能调优的方法和技巧,没有定死的,也不是一成不变。
  • 性能调优的过程就是使各个方面、各个资源都协调运行的状态。

如何定位性能瓶颈

途径可分2种:

  1. 凭借之前的经验判断;
  2. 通过sparkUI来判断:包括DAG、stage、执行计划、executor负载、内存和缓存等信息。

第一种途径,往往需要开发人员有较多的spark开发经验。比如一个任务卡在某个task了,凭经验大致猜测该任务有shuffle的存在。

而第二种途径适合任何人。我们通过sparkUI的信息,去分析瓶颈位置的执行情况。从而定位到具体问题。

不管哪种途径,从硬件资源的消耗入手是最快捷的方式,因为瓶颈都是体现在硬件资源上。

性能调优的方法

在spark中,其实方法就2种:

  • 从代码出发:这个我们在开发阶段就要注意起来。我们需要清楚导致性能瓶颈的常见操作,从而尽可能在开发代码时留下性能瓶颈的隐患;
  • 从spark配置项出发:在我们代码开发后,需要有合适的配置来运行spark作业。这就要求我们熟悉配置项的作用和分类。

小结

spark的性能调优,目的就是让我们的服务器资源之间得到平衡。因为资源不是无穷尽,我们需要合理调整,让这些硬件之间协调运行,达到少产生瓶颈的状态。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。