Spark性能优化概览
Spark在本质上是一个基于内存计算的框架,当我们在Spark集群中运行Spark应用程序时,就存在着很多因素影响Spark应用程序的性能。比如说:CPU,网络带宽,内存等。如果,内存足够大,能够放下所有的数据,那么,CPU或者网络传输就可能出现性能瓶颈。如果,内存不够大,无法放下所有的数据,那么就要使用一些手段来减少内存消耗,从而提高Spark应用程序的性能。
通常来说,Spark性能优化主要是针对内存进行优化。但是,不仅仅只是内存调优,还有很多其他的方法。
Spark的性能优化技术概览
- 使用高性能序列化类库
- 优化数据结构
- 对多次使用的RDD进行持久化或者Checkpoint
- 使用序列化的持久化级别
- Java虚拟机垃圾回收调优
- 提高并行度
- 广播共享数据
- 数据本地化
- reduceByKey和groupByKey
- Shuffle调优(核心)