总结前面性能优化相关文章,列出Spark开发性能优化的一般步骤
前述文章包括:
1. Spark总结整理(三):Spark Core 性能优化之开发调优
2. Spark总结整理(四):Spark Core 性能优化之资源调优
3. Spark总结整理(五):Spark Core 性能优化之数据倾斜调优
4. Spark总结整理(六):Spark Core 性能优化之Shuffle调优
5. Spark总结整理(七):Spark Core 性能优化之内存模型
思路如下:
- 开发之前和开发过程中,参考 Spark Core 性能优化之开发调优 一文中的 10大原则,分析业务逻辑,提前定位可能的性能瓶颈
- 尽可能将资源相关的配置放在提交命令中,不要硬编码在代码中,根据具体业务和使用的spark版本, 参考 Spark Core 性能优化之资源调优 一文,确定任务所需资源
- 观察线上任务,如果 出现OOM 或者 SparkUI 上观察到发生数据倾斜,参考 Spark Core 性能优化之数据倾斜调优 一文进行方案调整
- 一般来说,通过前面3步,已可解决大部分问题,如需进一步针对 shuffle 进行优化,可参考 Spark Core 性能优化之Shuffle调优 一文,进行特别配置
第3、4点属于事后优化,即线上任务出现问题后进行定位、解决,Spark Core 性能优化之内存模型 一文加深 对 Spark 内存的理解,以便更加从容的解决 spark 性能问题
个人觉得,相比于Flink任务,Spark需要开发任务对Spark内存等方面有更为深入的理解,方能应付线上出现的一系列问题,而Flink这方面则简便许多,尤其是在背压方面,Flink帮运维省去了大部分精力