Spark调优经验总结
概述
本文以Spark实践经验和Spark原理为依据,总结了Spark性能调优的一些方法。这些总结基于Spark-1.0.0版本。对于最近推出的Spark-1.1.0版本,本文介绍了几个版本增强。
Spark性能调优
Executor和分区
Executor是一个独立的JVM进程,每个任务会有独立的线程来执行,Executor最大可并发任务数量与其拥有的核心数量相同,执行过程中的数据缓存放在Executor的全局空间中。根据以上我们可以得出:
- 同一个Executor中执行的任务,可以共享同一个数据缓存。这也是Spark称之为Process local级别的数据本地性。
- Executor可并发执行的任务数量,与其所拥有的核心数相同。
- 并发任务之间可能会产生相互干扰,如有些任务占用内存较大会导致其他并发任务失败。
- Executor都需要注册到Driv