当前位置: 首页 > news >正文

Spark参数配置不合理的情况

1.1 内存设置 💾

常见的内存设置有两类:堆内和堆外 💡

我们作业中大量的设置 driver 和 executor 的堆外内存为 4g,造成资源浪费 📉。

通常 executor 堆外内存在 executor.cores=1 的时候,1g 足够了,正常来说最大值不超过 2g;driver 1g-2g 足够了 ✅。

注意:如果有 c++ 库这种计算,executor 堆外内存可以保持原有配置。 📚

各版本推荐配置的 key 以及配置值各版本不推荐配置的 key 及配置值过去无效配置,建议删除 🚫
driver 堆内 💽–conf spark.driver.memory=6G
driver 堆外 💾–conf spark.driver.memoryOverhead=2G–conf spark.yarn.driver.memoryOverhead=4g–conf spark.yarn.driver.direct*
executor 堆内 💽–conf spark.executor.memory=3G
executor 堆外 💾–conf spark.executor.memoryOverhead=1G–conf spark.yarn.executor.memoryOverhead=4g–conf spark.yarn.executor.direct*
1.2 动态资源调度相关参数 📊

不开启动态资源管理或者参数设置不合理,会导致明显的资源浪费 💸:
涉及到动态资源调度的参数主要有以下几个 📝:

参数名 🛠️默认值 ⚙️作用 🧐错误使用案例 🚫使用建议 🌟
spark.dynamicAllocation.enabled ✅false开启资源动态能力,在 executor 空闲时可以释放,需要资源是发起请求不开启开启资源动态功能,尤其是运行时间比较长或者有数据倾斜的情况 🌟
spark.dynamicAllocation.executorIdleTimeout ⏲️60sexecutor 空闲多久开始释放资源30000 或者 1200s 过大的数值 🚫60s-120s 🌟
spark.dynamicAllocation.minExecutors 📉0最小持有的 executor 数,到达该值,空闲也不会释放200 🚫推荐设置为 1-5 🌟
spark.dynamicAllocation.maxExecutors 📈infinity作业申请 executor 资源的最大值1000 以上 🚫通常最大值建议 256-500 即可,小作业可以更小的设置 🌟

1.3 序列化参数 📝

Spark 中序列化主要有两种,java、kryo。相对来说 kryo 序列化效率更高,作为推荐 💡:

1 spark.serializer org.apache.spark.serializer.KryoSerializer

与 kryo 相关的设置有 📊:

1 spark.kryoserializer.buffer,默认值 64k,这个不需要设置,设置值过大会常驻
2 spark.kryoserializer.buffer.max,默认值 64m

不需要设置 spark.kryoserializer.buffer,默认的 buffer 会在 64k 到 64m 动态伸缩,没有特殊需要不需要设置,如果数据比较大,设置 spark.kryoserializer.buffer.max

1.4 并行度设置 ⚙️

在这里插入图片描述

常见的并行度配置有两个 🔧:

  1. spark.default.parallelism 默认值:会继承上游 stage 的并行度,主要用于 rdd 的 shuffle 操作
  2. spark.sql.shuffle.partitions 默认值 200,主要用于 sql 的 shuffle 操作

算法作业绝大多数是 rdd 操作,合理设置并行度,事半功倍 💪,后面会专门介绍怎么优化自己的并行度设置 🌟

spark.default.parallelism 不建议设置的非常大。 🚫

http://www.lryc.cn/news/370806.html

相关文章:

  • 【OpenGL学习】OpenGL不同版本渲染管线汇总
  • 等保测评练习
  • 第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
  • MYSQL 三、mysql基础知识 4(存储过程与函数)
  • 鸿蒙开发文件管理:【@ohos.statfs (statfs)】
  • C++和C语言到底有什么区别?
  • 【Centos】深度解析:CentOS下安装pip的完整指南
  • 半导体PW和NPW的一些小知识
  • 后端启动项目端口冲突问题解决
  • 【优选算法】优先级队列 {优先级队列解决TopK问题,利用大小堆维护数据流的中位数}
  • 11 IP协议 - IP协议头部
  • 【java】【python】leetcode刷题记录--二叉树
  • EVA-CLIP实战
  • 限定法术施放目标
  • 【通信原理】数字频带传输系统
  • 数据价值管理-数据验收标准
  • vue3模板语法总结
  • Spring Cloud 之 GateWay
  • 可转债全部历史因子数据,提供api支持
  • Python | C++ | MATLAB | Julia | R 市场流动性数学预期评估量
  • Android 常用开源库 MMKV 源码分析与理解
  • 大模型高级 RAG 检索策略之流程与模块化
  • TCPListen客户端和TCPListen服务器
  • DDei在线设计器-属性编辑器
  • 八字综合测算网整站源码程序/黄历/灵签/排盘/算命/生肖星座/日历网/周公解梦
  • C# WPF入门学习主线篇(十一)—— 布局管理
  • LabVIEW轴承试验机测控系统
  • 0605 实际集成运算放大器的主要参数和对应用电路的影响
  • 艾宾浩斯winform单词系统+mysql
  • rv1126-rv1109-串口显示路径不变化