在上一篇文章里面我们介绍了spark应用程序提交,也提到过几个常见的参数,这篇文章我们详细介绍下对应的参数信息及说明。详细的参数如下:
序号 | 选项 | 说明 |
1 | --master | 指定使用哪个集群管理器来运行spark的应用程序,Spark目前支持的方式有:Yarn、Mesos、Kubernetes、standalone、local这5种方式 |
2 | --deploy-mode | 是否要在本地(client端)启动驱动程序,或者在集群中的某一台worker机器上启动驱动程序,自爱client模式下,驱动程序在调用spark-submit的机器上执行本地运行。client这种模式主要用于交互和调试使用。在cluster模式下,驱动程序会被发送到集群的某一个worker节点上运行,该节点在应用程序的spark web ui上显示为driver,集群模式适用于生产环境。这里的driver默认是client模式 |
3 | --class | 这里主要是指spark应用程序的主类,可以是java程序,也可以是scala程序 |
4 | --name | 应用程序易读的名称,这将显示在spark的web ui上 |
5 | --jars | 这里一般都是指spark应用程序的外部依赖包,也就是我们有时候在编写spark应用程序的时候,maven里面有很多依赖,由于各个研发人员可能使用不同版本等,同时由于打包太大,因此一般我们都打包自己编写的代码,剩下的依赖统一在提交的时候指定外部依赖即可。如果是多个jar包的依赖的话,使用英文逗号进行分割 |
6 | --files | 这里其实也是外部的依赖文件,一般来自项目的resources文件夹。指定这个配置文件之后,这里的文件会被分发到集群的每一个节点上 |
7 | --executor-memory | executor使用的内存数量,默认单位是字节,但是也可以指定不同的后缀来进行转换,例如:512m,2g |
8 | --driver-memory | driver进程使用的内存数量,默认单位是字节,但是也可以指定不同的后缀来进行转换,例如:512m,2g |
9 | --verbose | 显示详细信息 |
10 | --config | 用于指定应用程序配置,shuffle参数,运行时配置等等 |
下面再介绍下子参数
一、driver相关的参数
序号 | 选项 | 说明 |
1 | --driver-memory | Spark driver需要使用的内存 |
2 | --driver-cores | spark driver需要使用的cpu内核数 |
3 | --num-executors | 要使用的执行器executor总数 |
4 | --executor-memory | executor进程使用的内存量 |
5 | --executor-cores | executor进程使用的cpu核数 |
6 | --total-executor-cores | 要使用的执行器executor内核总数 |
示例如下:
./spark-submit--class org.apache.spark.examples.WordCount --master spark://master:7077 --deploy-mode cluster --executor-memory 5G --executor-cores 8 $SPARK_HOME/examples/jars/spark-examples_3.1.2.jar
二、config相关的参数
序号 | 选项 | 说明 |
1 | spark.sql.shuffle.partitions | 为shuffle数据转换创建的分区数 |
2 | spark.executor.memoryOverhead | 在集群模式下为每一个executor进程分配的额外内存量,这主要用于JVM的开销 |
3 | spark.serializer | 序列化和反序列化 |
4 | spark.sql.files.maxPartitionBytes | 读取文件时为每个分区使用的最大字节数,默认是128M |
5 | spark.dynamicAllocation.enabled | 指定是否根据工作负载动态增加或减少executor的数量,默认为true |
6 | spark.dynamic.Allocation.minExecutors | 启动动态分配时使用的最小executor数量 |
7 | spark.dynamic.Allocation.maxExecutors | 启动动态分配时使用的最大executor数量 |
8 | spark.extraJavaOptions | 指定JVM选项 |
示例如下:
./bin/spark-submit \ --master yarn \ --deploy-mode cluster \ --conf "spark.sql.shuffle.partitions=20000" \ --conf "spark.executor.memoryOverhead=5244" \ --conf "spark.memory.fraction=0.8" \ --conf "spark.memory.storageFraction=0.2" \ --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \ --conf "spark.sql.files.maxPartitionBytes=168435456" \ --conf "spark.dynamicAllocation.minExecutors=1" \ --conf "spark.dynamicAllocation.maxExecutors=200" \ --conf "spark.dynamicAllocation.enabled=true" \ --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" \ --files /path/log4j.properties,/path/file2.conf,/path/file3.json \ --class org.apache.spark.examples.WordCount \ $SPARK_HOME/examples/jars/spark-examples_repace-spark-3.1.2.jar
备注:
1、这些参数在我们生产环境提交任务的时候经常会使用到,多使用几次就能熟悉对应的配置信息了。
还没有评论,来说两句吧...