![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spark调优
文章平均质量分 86
Spark调优
浊酒南街
纵使疾风起,人生不言弃。
展开
-
spark常用参数调优
spark常用参数调优原创 2024-07-29 20:37:45 · 1137 阅读 · 0 评论 -
大数据之Spark调优:SparkSQL 语法优化
Spark SQL核心是Catalyst, Catalyst执行流程主要分4个阶段, 语句解析, 逻辑计划与优化, 物理计划与优化, 代码生成前三个阶段都由Catalyst负责, 其中, 逻辑计划的优化采用RBO (Rule Based Optimization)思路, 物理计划的优化采用CBO (Cost Based Optimization)思路;原创 2023-09-12 19:37:36 · 278 阅读 · 0 评论 -
大数据之Spark调优:故障排除
虽然说增大 reduce 端缓冲区大小可以减少拉取次数,提升 Shuffle 性能,但是有时map 端的数据量非常大,写出的速度非常快,此时 reduce 端的所有 task 在拉取的时候,有可能全部达到自己缓冲的最大极限值,即 48MB,此时,再加上 reduce 端执行的聚合函数的代码,可能会创建大量的对象,这可难会导致内存溢出,即 OOM。reduce 端拉取数据的缓冲区减小,不容易导致 OOM,但是相应的,reudce 端的拉取次数增加,造成更多的网络传输开销,造成性能的下降。原创 2023-10-07 19:27:06 · 126 阅读 · 0 评论 -
大数据之Spark调优:Job 优化之map端优化
map-side 预聚合,就是在每个节点本地对相同的 key 进行一次聚合操作,类似于MapReduce 中的本地 combiner。map-side 预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同的 key 都被聚合起来了。原创 2023-09-18 16:57:01 · 305 阅读 · 0 评论 -
大数据之Spark调优:Job 优化之 整体优化
在 Spark 项目开发阶段,可以使用 client 模式对程序进行测试,此时,可以在本地看到比较全的日志信息,日志信息中有明确的 Task 数据本地化的级别,如果大部分都是PROCESS_LOCAL、NODE_LOCAL,那么就无需进行调节,但是如果发现很多的级别都是RACK_LOCAL、ANY,那么需要对本地化的等待时长进行调节,应该是反复调节,每次调节完以后,再来运行观察日志,看看大部分的 task 的本地化级别有没有提升;看看,整个spark 作业的运行时间有没有缩短原创 2023-09-21 16:20:51 · 110 阅读 · 0 评论 -
大数据之Spark调优:Spark3.0 Hint 增强
在 spark2.4 的时候就有了 hint 功能,不过只有 broadcasthash join 的 hint,这次 3.0 又增加了 sort merge join,shuffle_hash join,shuffle_replicate nested loop join。Spark 的 5 种 Join 策略:https://www.cnblogs.com/jmx-bigdata/p/14021183.html。原创 2023-10-07 17:12:14 · 285 阅读 · 0 评论 -
大数据之Spark调优:Spark3.0 AQE
Spark 在 3.0 版本推出了 AQE(Adaptive Query Execution),即自适应查询执行。AQE 是Spark SQL 的一种动态优化机制,在运行时,每当 Shuffle Map 阶段执行完毕,AQE 都会结合这个阶段的统计信息,基于既定的规则动态地调整、修正尚未执行的逻辑计划和物理计划,来完成对原始查询语句的运行时优化。原创 2023-10-07 11:21:00 · 582 阅读 · 0 评论 -
大数据之Spark调优:Spark3.0 DPP
Spark3.0 支持动态分区裁剪 Dynamic Partition Pruning,简称 DPP,核心思路就是先将join 一侧作为子查询计算出来,再将其所有分区用到 join 另一侧作为表过滤条件,从而实现对分区的动态修剪。如下图所示。原创 2023-10-07 11:40:41 · 117 阅读 · 0 评论 -
大数据之Spark调优:数据倾斜
从所有 key 中,把其中每一个 key 随机取出来一部分,然后进行一个百分比的推算,这是用局部取推算整体,虽然有点不准确,但是在整体概率上来说,我们只需要大概就可以定位那个最多的 key 了。记录先进行一个预结算,再将结果进行 shuffle,发送到 reduce 端做一个汇总,类似 MR 的。聚合类的 shuffle 操作,部分 key 数据量较大,且大 key 的数据分布在很多不同的切片。直接优化掉 stage。1)将存在倾斜的表,根据抽样结果,拆分为倾斜 key(skew 表)和没有倾斜 key。原创 2023-09-14 19:29:40 · 98 阅读 · 0 评论 -
大数据之Spark资源调优:资源规划
当数据过于分散,分布式任务数量会大幅增加,但每个任务需要处理的数据量却少之又少,就 CPU 消耗来说,相比花在数据处理上的比例,任务调度上的开销几乎与之分庭抗礼。显然,在这种情况下,CPU 的有效利用率也是极低的。先设定单个 Executor 核数,根据 Yarn 配置得出每个节点最多的 Executor 数量,每个节点的 yarn 内存/每个executor的内存=单个节点的 Executor数量,总的 executor 数=单节点Executor 数量*节点数。内存使用 612.3mb。原创 2023-09-11 17:43:22 · 545 阅读 · 0 评论 -
大数据之Spark调优:Explain 查看执行计划
Spark SQL 取代 Spark Core,成为新一代的引擎内核,所有其他子框架如 Mllib、Streaming 和 Graph,都可以共享 Spark SQL 的性能优化,都能从 Spark 社区对于 Spark SQL 的投入中受益。1)HashAggregate 运算符表示数据聚合,一般 HashAggregate 是成对出现,第一个HashAggregate 是将执行节点本地的数据进行局部聚合,另一个 HashAggregate 是将各个分区的数据进一步进行聚合计算。原创 2023-09-08 19:05:59 · 877 阅读 · 0 评论 -
大数据之Spark调优:Job 优化之 Reduce 端优化
过多的 cpu 资源出现空转浪费,过少影响任务性能。关于并行度、并发度的相关参数介绍原创 2023-09-20 17:00:05 · 201 阅读 · 0 评论