大数据Spark(八十七):Spark-Submit 参数详解

文章目录

[Spark-Submit 参数详解](#Spark-Submit 参数详解)

一、基本参数

二、资源相关参数

三、参数配置实践建议

四、总结


在 Spark 中,spark-submit 是用于将应用程序提交到集群运行的命令行工具。通过 spark-submit,用户可以将编写好的 Spark 作业提交到不同的集群管理器(如 Standalone、YARN、Mesos、Kubernetes 等)上执行。合理配置 spark-submit 参数,不仅决定了作业能否正常运行,还直接影响资源利用率和执行效率。本文对 spark-submit 的常用参数进行系统梳理,并给出实践建议。

一、基本参数

基本参数用于指定作业的运行环境、入口类和依赖资源,是提交作业时最常用的一组配置。

  • --master :指定集群主节点,决定 Spark 程序的运行环境。可以设置为:local、local[K]、local[*]、spark://HOST:PORT、yarn 等。
  • --deploy-mode :指定 Driver 部署模式,可选 Client(默认)或 Cluster。
  • --class:指定 Application 运行主类(包含包名和类名),仅适用于 Java 或者 Scala 程序。
  • --name:指定 Application 的名称,便于在集群管理界面中识别作业。
  • --jars:以逗号分割的本地 jar 包列表,这些 jar 将包含在 Driver 和 Executor 端。
  • --files:以逗号分割的文件列表,这些文件会分发到集群中的每个 Worker 节点。
  • --conf :以 key=value 形式指定 Spark 配置属性。
  • --supervise :只适用于 Standalone 和 Mesos 集群中。指定该参数后,在 Cluster 模式下如果 Driver 失败,会自动重启。

二、资源相关参数

资源相关参数用于控制 Driver 和 Executor 的内存、CPU 核数以及实例数量,是影响作业性能的关键配置。需要注意的是,不同集群管理器支持的参数范围存在差异。

  • --driver-memory:设置 Driver 程序的内存大小,默认 1024M。
  • --executor-memory:设置每个 Executor 的内存,默认 1G。
  • --driver-cores :只适用在 Cluster 模式中。设置 Driver 使用的 core 数,默认 1。
  • --total-executor-cores :只适用于 Standalone 和 Mesos 集群中。设置所有 Executor 使用的总 core 数,默认 Standalone 中会使用所有集群中的 core。
  • --executor-cores :只适用于 Standalone、YARN 和 K8s 集群中 。设置每个 Executor 使用的核数。YARN 和 K8s 集群中默认为 1,Standalone 集群中默认为当前 Worker 节点的所有 core 数。
  • --num-executors :只适用于 YARN 和 K8s 集群中。设置启动 Executor 的个数,默认 2 个。
  • --queue :只适用于 YARN 集群中。指定使用的资源队列。

三、参数配置实践建议

在实际使用中,参数配置需要结合集群规模、数据量和作业类型综合考虑,以下是几点常见建议:

  • 先明确集群管理器 :不同集群管理器支持的参数不同,例如 --num-executors 仅适用于 YARN 和 K8s,配置前应先确认运行环境。
  • 合理设置 Executor 资源:Executor 内存过小容易导致频繁 GC 甚至 OOM,过大则可能浪费资源;通常建议单个 Executor 使用 2 到 5 个 core,并配合适当的内存比例。
  • 关注 Driver 内存 :当作业中存在大量 collect、广播变量或复杂 DAG 时,应适当调大 --driver-memory。
  • 使用 --conf 精细化调优 :序列化方式、Shuffle 分区数、动态资源分配等都可以通过 --conf 传入,便于在不修改代码的情况下调整作业行为。
  • 依赖管理 :第三方依赖优先通过 --jars 或 --packages 引入,避免因类路径缺失导致作业启动失败。

四、总结

spark-submit 是 Spark 作业提交的统一入口,其参数大致可以分为两类:一类是基本参数 ,用于指定运行环境、主类、名称和依赖资源;另一类是资源相关参数,用于控制 Driver 与 Executor 的内存、核数和实例数量。掌握这些参数的含义和适用范围,是进行 Spark 作业调优的第一步。

在实际生产中,建议遵循"先保证正确运行,再逐步优化资源"的思路:先通过 --master、--class、--jars 等参数确保作业能够正常提交和执行,再结合集群监控数据调整 --executor-memory、--executor-cores、--num-executors 等资源参数,最终在稳定性与资源成本之间取得平衡。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关推荐
cc57250265322 分钟前
数据科学与大数据技术专业考证清单有哪些?
大数据
qq_452396231 小时前
第二篇:《CommitLog + ConsumeQueue:一条日志解决 Kafka 多分区随机写的难题》
分布式·kafka
Alluxio19 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
喵个咪1 天前
GoWind Admin 拆解:BI 大屏设计器——schema 即 JSON、resolver 注入与三张快照表的口径谱系
大数据·后端·go
武子康1 天前
H3-World 的 11.3 小时训练数据,是怎样对齐成动作监督的?
大数据·人工智能·深度学习
字节跳动数据平台1 天前
火山引擎知识引擎VeKnow进化之路(下):让 AI 智能体更可用、更可信、更懂业务
大数据
Elastic 中国社区官方博客1 天前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
阿卡好可爱1 天前
Lua 热更新不生效:改完文件线上仍是旧逻辑,package.loaded 与 upvalue 重绑定详解
数据结构·分布式·后端·架构·lua
MyBili1 天前
Chrome隐私安全配置:完整防护指南
大数据·chrome·谷歌浏览器·隐私安全·浏览器防护·cookie管理·上网痕迹清理