48、Spark性能优化之性能优化概览

Spark性能优化概览

由于Spark的计算本质是基于内存的,所以Spark性能程序的性能可能因为集群中的任何因素出现瓶颈:CPU、网络带宽、或者是内存。如果内存能够容纳得下所有的数据,那么网络传输和通信就会导致性能出现瓶颈。但是如果内存比较紧张,不足以放下所有的数据(比如在针对10亿以上的数据量进行计算时),还是需要对内存的使用进行性能优化的,比如说使用一些手段来减少内存的消耗。
Spark性能优化,其实主要就是在于对内存的使用进行调优。因为通常情况下来说,如果你的Spark应用程序计算的数据量比较小,并且你的内存足够使用,那么只要运维可以保障网络通常,一般是不会有大的性能问题的。但是Spark应用程序的性能问题往往出现在针对大数据量(比如10亿级别)进行计算时出现,因此通常来说,Spark性能优化,主要是对内存进行性能优化。当然,除了内存调优之外,还有很多手段可以优化Spark应用程序的性能。

Spark性能优化技术

Spark的性能优化,主要手段包括:

  1. 使用高性能序列化类库
  2. 优化数据结构
  3. 对多次使用的RDD进行持久化 / Checkpoint
  4. 使用序列化的持久化级别
  5. Java虚拟机垃圾回收调优
  6. 提高并行度
  7. 广播共享数据
  8. 数据本地化
  9. reduceByKey和groupByKey的合理使用
  10. Shuffle调优(核心中的核心,重中之重)

你可能感兴趣的:(48、Spark性能优化之性能优化概览)