Spark调优

mac2024-10-27  11

Spark性能优化

task个数怎么划分设计

需要两个方向同时考虑: 1.spark程序的并行度[task个数=分区数] 2.硬件资源方面:分区数=cpu核数2-3倍

为什么需要调优

Spark的性能调优由开发调优、资源调优、数据倾斜调优、shuffle调优几个部分组成。开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜调优,主要用一套完整的用来解决Spark作业数据倾斜的解决方案;shuffle调优,面向的是对Spark的原理有较深层次掌握的开发者。 性能优化学习 学习Spark开发调优和资源调优比较好的方式是参考美团点评技术团队的技术博客Spark性能调优-基础篇,这里已经写得非常全面了,学习完就可以掌握Spark性能调优的基础部分了。总体可以分为两个方面: 开发调优 Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则。开发调优,包括:RDD lineage设计、算子的合理使用、特殊操作的优化等。在开发过程中,时时刻刻都应该注意以上原则,并将这些原则根据具体的业务以及实际的应用场景,灵活地运用到自己的Spark作业中。 避免创建重复的RDD 尽可能复用同一个RDD 对多次使用的RDD进行持久化 尽量避免使用shuffle类算子 使用map-side预聚合的shuffle操作 使用高性能的算子 广播大变量 使用Kryo优化序列化性能 优化数据结构 资源调优 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。调整的主要是一系列的资源相关参数。 所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。 num-executors executor-memory executor-cores driver-memory spark.default.parallelism spark.storage.memoryFraction spark.shuffle.memoryFraction 性能优化实践 以MovieLens数据集为基础,完成Spark的Map-Side Join和Reduce Side Join例子(过滤出评分高于4.0分的电影,要求显示电影ID 电影名称 电影分数),并比较性能优劣。应该如何调整不同的spark-submit参数获得最佳效果(运行时间),并给出基于目前的运行环境最优参数设置方案。 查看数据 简单查看一下所有表的结构才能完成目标任务。 所有评级都包含在“ratings.dat”文件中,并且位于格式如下: 用户名 MovieID 评级 时间戳

最新回复(0)