10、调优配置项速查手册-下你好,我是吴磊。 上一讲,我们讲了硬件资源类的配置项。这一讲,我们继续说说Shuffle类和Spark SQL大类都有哪些配置项,它们的含义和作用,以及它们能解决的问题。同时,和上一讲一样,我们今天讲到的配置项也全部会围绕Executors展开。 S...2025-11-01Spark性能调优实战
11、Shuffle是一时无两的性能杀手你好,我是吴磊。 一提到Shuffle,你能想到什么?我想很多人的第一反应都是应用中最顽固、最难解决的性能瓶颈。 在之前的课程中,我们也不止一次地提到Shuffle,尤其是在开发原则那一讲,我还建议你遵循“能省则省、能拖则拖”的原则,在应用中尽量去避...2025-11-01Spark性能调优实战
12、克制Shuffle,如何一招制胜你好,我是吴磊。 在数据分析领域,数据关联(Joins)是Shuffle操作的高发区,二者如影随从。可以说,有Joins的地方,就有Shuffle。 我们说过,面对Shuffle,开发者应当“能省则省、能拖则拖”。我们已经讲过了怎么拖,拖指的就是,把...2025-11-01Spark性能调优实战
13、如何让Spark SQL选择Broadcast Joins?你好,我是吴磊。 上一讲我们说到,在数据关联场景中,广播变量是克制Shuffle的杀手锏,用Broadcast Joins取代Shuffle Joins可以大幅提升执行性能。但是,很多同学只会使用默认的广播变量,不会去调优。那么,我们该怎么保证Spa...2025-11-01Spark性能调优实战
14、如何高效地利用CPU?你好,我是吴磊。 在日常的开发与调优工作中,总有同学向我抱怨:“为什么我的应用CPU利用率这么低?偌大的集群,CPU利用率才10%!”确实,较低的CPU利用率不仅对宝贵的硬件资源来说是一种非常大的浪费,也会让应用端到端的执行性能很难达到令人满意的效果...2025-11-01Spark性能调优实战
15、如何最大化内存的使用效率你好,我是吴磊。 上一讲我们说,想要提升CPU利用率,最重要的就是合理分配执行内存,但是,执行内存只是Spark内存分区的一部分。因此,想要合理分配执行内存,我们必须先从整体上合理划分好Spark所有的内存区域。 可在实际开发应用的时候,身边有不少同...2025-11-01Spark性能调优实战
16、如何有效避免Cache滥用你好,我是吴磊。 在Spark的应用开发中,有效利用Cache往往能大幅提升执行性能。 但某一天,有位同学却和我说,自己加了Cache之后,执行性能反而变差了。仔细看了这位同学的代码之后,我吓了一跳。代码中充斥着大量的.cache,无论是RDD,还是...2025-11-01Spark性能调优实战
17、OOM都是谁的锅?怎么破?你好,我是吴磊。 无论是批处理、流计算,还是数据分析、机器学习,只要是在Spark作业中,我们总能见到OOM(Out Of Memory,内存溢出)的身影。一旦出现OOM,作业就会中断,应用的业务功能也都无法执行。因此,及时处理OOM问题是我们日常开...2025-11-01Spark性能调优实战
18、如果内存无限大,磁盘还有用武之地吗?你好,我是吴磊。 我们都知道,Spark的优势在于内存计算。一提到“内存计算”,我们的第一反应都是:执行效率高!但如果听到“基于磁盘的计算”,就会觉得性能肯定好不到哪儿去。甚至有的人会想,如果Spark的内存无限大就好了,这样我们就可以把磁盘完全抛弃...2025-11-01Spark性能调优实战
19、如何有效降低网络开销你好,我是吴磊。 在平衡不同硬件资源的时候,相比CPU、内存、磁盘,网络开销无疑是最拖后腿的那一个,这一点在处理延迟上表现得非常明显。 下图就是不同硬件资源的处理延迟对比结果,我们可以看到最小的处理单位是纳秒。你可能对纳秒没什么概念,所以为了方便对比...2025-11-01Spark性能调优实战