目录
- 1、分配更多资源、并行度、RDD架构与缓存
- 2、shuffle 调优
- 3、算子调优
- 4、JVM调优、广播大变量、kryo序列化、fastutil优化数据格式等
- 5、troubleshooting
- 6、数据倾斜
1、分配更多资源、并行度、RDD架构与缓存
分配更多资源:
- spark作业分配更多的executor
- 对与每个executor分配更多的memory
- 对于每个executor分配更多的cpu core
并行度:
- 所谓并行度是指spark作业中每个stage阶段中可以执行的task数量
- 提高每个stage可以执行的task,提高并行度,降低每个task处理的数据量
- 官方推荐,task数量设置成spark application总cpu core数量的2~3倍
- SparkConf conf = new SparkConf().set("spark.default.parallelism", "task数量")
RDD重构与缓存:
- RDD架构重构与优化,尽量去复用RDD,差不多的RDD,可以抽取称为一个共同的RDD,供后面的RDD计算时,反复使用;
- 公共RDD一定要实现持久化,持久化顺序为:纯内存无序列化;纯内存序列化;内存加磁盘无序列化;内存加磁盘序列化
- 为了数据的高可靠性,而且内存充足,可以使用双副本机制,进行持久化;
2、shuffle 调优
3、算子调优
4、JVM调优、广播大变量、kryo序列化、fastutil优化数据格式等
5、troubleshooting
6、数据倾斜