一般来说,我们在进行性能调优的时候,主要是往三点靠,降低CPU消耗,减少IO,优化内存使用。
Spark调优主要从两个方面,一个是Spark Core,另一个是Spark SQL。
1、executor调优
调优方式1: 程序跑的过程中,发现Spark job有时候特别慢,查看cpu的利用率很低,可以尝试减少每个executor占用cpu core的数量,增加并行executor的数量.配合增加切片,整体上提高cpu的利用率,从而提高性能.
调优方式2: 如果发现Spark job的时常发生内存溢出, 增加分片的数量,从而就可以减少每片数据的规模,能够更多的task处理同样的任务,减少executor的数量,这样每个executor能够分配到的内存就更大,相当于每个task的内存能够更大的分配. 可能运行速度变慢了些,但是不会内存溢出了.
调优方式3: 如果数据量很少,有大量的小文件生成, 那就减少文件分片,使task整体数量减少,每个task能够分到更大的内存.,处理更多的数据,就不会有大量的小文件生成.
2、频繁GC或者OOM优化
频繁GC(垃圾回收)或者OOM(内存溢出)在Driver端和Executor端分别有不同的处理方式
3、数据倾斜优化
4、程序开发调优
避免创建重复的RDD、尽可能复用同一个RDD、对多次使用的RDD进行持久化、尽量避免使用shuffle类算子、使用map-side预聚合的shuffle操作、使用高性能的算子、广播大变量、使用Kryo优化序列化性能、优化数据结构
5、运行资源调优
所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。
num-executors、executor-memory、executor-cores、driver-memory、spark.default.parallelism、spark.storage.memoryFraction、spark.shuffle.memoryFraction
想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习
上一篇: Java培训课程之 jsp声明和注释
下一篇: 前端培训面试题分析-WebView和原生是如何通信