菜鸟科技网

Spark启动命令行有哪些参数?

Spark启动命令行是使用Apache Spark集群或本地模式运行应用程序的核心方式,通过命令行可以灵活配置资源、指定应用程序入口及各项参数,无论是开发调试还是生产部署,掌握Spark启动命令行的使用方法都是必备技能,以下将从基本语法、常用参数、部署模式及实际案例等方面进行详细说明。

Spark启动命令行有哪些参数?-图1
(图片来源网络,侵删)

Spark应用程序的启动主要通过spark-submit脚本实现,该脚本位于Spark安装目录的bin目录下。spark-submit的作用是将应用程序打包后的JAR文件或Python脚本提交到Spark集群上运行,同时支持多种部署模式,如local(本地模式)、standalone(独立集群模式)、YARN(Hadoop集群资源管理器)和Mesos等,基本语法结构为:spark-submit [options] <app jar | python file> [app arguments],其中options为Spark运行时的配置参数,app jarpython file为用户编写的应用程序代码,app arguments为传递给应用程序的额外参数。

spark-submit的众多参数中,资源相关配置是核心部分,通过--master参数可以指定运行模式,例如local[*]表示本地利用所有CPU核心,spark://master:7077表示连接到独立的Spark集群主节点,yarn表示使用YARN集群模式。--deploy-mode参数用于指定部署方式,client模式下驱动程序运行在客户端节点,适合调试;cluster模式下驱动程序运行在集群工作节点,适合生产环境,资源参数方面,--driver-memory设置驱动程序的内存(如2g),--driver-cores设置驱动程序的CPU核心数(仅适用于YARN的cluster模式);--executor-memory设置每个执行器的内存(如4g),--executor-cores设置每个执行器的CPU核心数,--num-executors设置执行器总数,这些参数共同决定了集群资源的分配。

Spark还提供了丰富的性能调优和功能参数。--conf可以动态配置Spark属性,如--conf spark.sql.shuffle.partitions=200设置shuffle分区数;--jars用于添加额外的依赖JAR文件,多个JAR用逗号分隔;--py-files指定Python依赖的.zip、.egg或.py文件;--files--archives可分发额外的配置文件或压缩包到集群节点;--name为应用程序指定名称,方便监控;--queue在YARN模式下指定资源队列;--verbose会打印详细的提交日志,便于调试,对于Python应用,还可通过--packages--exclude-packages等参数管理第三方依赖,如--packages org.apache.spark:spark-sql-kafka-0-10_2.12:3.3.0添加Kafka连接器。

不同部署模式下,参数配置存在差异,在本地模式中,仅需设置--master local[N],N为并行度,无需其他集群相关参数,独立模式下,需先启动Spark集群的Master节点(通过sbin/start-master.sh),然后启动Worker节点(sbin/start-worker.sh spark://master:7077 -c 2 -m 8g),最后通过--master spark://master:7077提交应用,并可配置--total-executor-cores--executor-memory限制资源,YARN模式下,需确保Hadoop和YARN环境配置正确,通过--master yarn提交,--deploy-mode可选client或cluster,同时需配置--queue--driver-memory等参数以适配YARN的资源调度策略,Mesos模式类似,需指定--master mesos://master:5050,并可能需要额外配置认证信息。

Spark启动命令行有哪些参数?-图2
(图片来源网络,侵删)

以一个Python WordCount程序为例,假设代码文件为wordcount.py,依赖文件为deps.zip,在本地运行可执行:spark-submit --master local[4] --py-files deps.zip wordcount.py hdfs://input hdfs://output;在YARN集群模式运行则需执行:spark-submit --master yarn --deploy-mode cluster --num-executors 5 --executor-memory 4g --executor-cores 2 --py-files deps.zip wordcount.py hdfs://input hdfs://output,该命令会申请5个执行器,每个4GB内存、2个核心,并将驱动程序部署在集群中。

为了更直观地展示常用参数及其作用,以下列出部分核心参数的说明:

参数名 作用示例 说明
--master --master spark://master:7077 指定Spark集群地址或运行模式
--deploy-mode --deploy-mode cluster 驱动程序部署位置,client或cluster
--driver-memory --driver-memory 2g 驱动程序内存大小
--executor-memory --executor-memory 4g 每个执行器内存大小
--executor-cores --executor-cores 2 每个执行器CPU核心数
--num-executors --num-executors 10 执行器总数量
--jars --jars jar1.jar,jar2.jar 添加额外依赖JAR文件
--py-files --py-files script.py,deps.zip 添加Python依赖文件
--conf --conf spark.sql.shuffle.partitions=100 动态配置Spark属性
--name --name "MySparkApp" 应用程序名称

通过合理配置这些参数,可以充分发挥Spark的性能优势,同时适配不同的业务场景和集群环境,在实际使用中,建议根据应用特点和集群资源状况,逐步调整参数以找到最优配置,例如通过监控Spark UI(默认端口4040)观察任务执行情况,优化shuffle操作和内存使用。

相关问答FAQs

Spark启动命令行有哪些参数?-图3
(图片来源网络,侵删)

Q1: 如何在Spark启动时动态修改配置参数?
A1: 使用--conf参数可以动态修改Spark配置,例如spark-submit --conf spark.sql.adaptive.enabled=true --conf spark.default.parallelism=100,该参数可以多次使用以设置多个配置项,优先级高于Spark的默认配置和配置文件中的设置,也可在代码中通过SparkConf对象设置配置,但--conf参数更适合在提交时灵活调整,无需修改代码。

Q2: 为什么在YARN模式下推荐使用--deploy-mode cluster
A2: 在YARN的cluster模式下,驱动程序运行在集群的工作节点上,客户端提交任务后即可释放资源,适合生产环境,因为客户端节点无需保持运行,且驱动程序与集群网络隔离更安全,而client模式下驱动程序在客户端运行,便于调试和查看日志,但客户端节点需要保持存活,且可能因网络问题影响任务稳定性,因此调试时可使用client模式,生产环境推荐cluster模式。

分享:
扫描分享到社交APP
上一篇
下一篇