[Spark基础]-- spark-2.1.0提交任务的配置参数说明

参考原文:https://spark.apache.org/docs/latest/configuration.html

 

一、目录

 Spark 属性

  • 动态加载Spark属性
  • 查看Spark属性
  • 可用属性
    • 应用程序属性
    • 运行时环境
    • Shuffle行为
    • Spark UI
    • 压缩和序列化
    • 内存管理
    • Execution 行为
    • 网络
    • 任务计划

 

Spark提供三个位置来配置系统:

·        Spark属性控制大多数应用程序参数,可以通过使用SparkConf对象或通过Java系统属性进行设置。

·        环境变量可用于通过每个节点上的cond/spark-env.sh脚本设置每台机器的设置,例如IP地址。

·        可以通过 log4j.properties来配置日志。


二、内容

1、spark属性

Spark属性控制大多数应用程序设置,并为每个应用程序单独配置。这些属性可以直接在传递给SparkContextSparkConf上设置。 SparkConf允许您通过set()方法配置一些公共属性(例如主URL和应用程序名称)以及任意键值对。例如,我们可以使用两个线程来初始化应用程序,如下所示:

注意,我们使用local [2]运行,这意味着两个线程 - 它代表“最小”并行性,它可以帮助检测在分布式上下文中运行时只存在的错误。

val conf =newSparkConf()

            .setMaster("local[2]")

            .setAppName("CountingSheep")

val sc =newSparkContext(conf)

 

 

注意,我们在本地模式下可以有多个线程,在Spark Streaming的情况下,我们实际上可能需要超过1个线程来防止任何类型的饥饿问题。

指定一些持续时间的属性应使用时间单位进行配置。接受以下格式:

25ms (milliseconds)

5s (seconds)

10m or 10min (minutes)

3h (hours)

5d (days)

1y (years)

 

指定字节大小的属性应使用大小单位进行配置。接受以下格式:

 

1b (bytes)

1k or 1kb (kibibytes = 1024 bytes)

1m or 1mb (mebibytes = 1024 kibibytes)

1g or 1gb (gibibytes = 1024 mebibytes)

1t or 1tb (tebibytes = 1024 gibibytes)

1p or 1pb (pebibytes = 1024 tebibytes)

 

2、动态加载spark属性

 

 

在某些情况下,您可能希望避免在SparkConf中对某些配置进行硬编码。例如,如果你想运行相同的应用程序与不同的主人或不同的内存量。 Spark允许你简单的创建一个空conf

val sc =newSparkContext(newSparkConf())

然后,您可以在运行时提供配置值:

 

./bin/spark-submit --name "Myapp" --master local[4] --conf spark.eventLog.enabled=false

 --conf  "spark.executor.extraJavaOptions=-XX:+PrintGCDetails-XX:+PrintGCTimeStamps"  myApp.jar

 

Spark shellspark-submit工具支持两种方式动态加载配置。第一个是命令行选项,如--master,如上所示。 spark-submit可以使用--conf标志接受任何Spark属性,但是在启动Spark应用程序时使用特殊的属性标志。运行./bin/spark-submit--help将显示这些选项的完整列表。.

 

bin/spark-submit还将从conf/spark-defaults.conf中读取配置选项,其中每行由键和以空格分隔的值组成。例如:

spark.master            spark://5.6.7.8:7077

spark.executor.memory   4g

spark.eventLog.enabled  true

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

 

指定为标志或属性文件中的任何值都将传递到应用程序,并与通过SparkConf指定的值合并。直接在SparkConf上设置的属性取最高优先级,然后标志传递到spark-submitspark-shell,然后传递到spark-defaults.conf文件中的选项。一些配置键已从Spark的早期版本重命名; 在这种情况下,较旧的键名仍然被接受,但是优先级比较新键的任何实例都低。

 

 

3、查看spark属性

位于http// 4040的应用程序Web UI列出了“环境”选项卡中的Spark属性。这是一个有用的地方,可以检查以确保您的属性设置正确。请注意,只会显示通过spark-defaults.confSparkConf或命令行显式指定的值。对于所有其他配置属性,可以假定使用缺省值。.

 

4、可用属性

 

控制内部设置的大多数属性具有合理的默认值。一些最常见的设置选项是:

(1)应用程序属性

 

属性名称                             

默认值                                                                   

注释  

spark.app.name                                                                                                                                               

(none)

应用程序的名称。 这将显示在UI和日志数据中。

spark.driver.cores

1

仅用于集群模式的驱动程序进程所使用的核心数。

spark.driver.maxResultSize

1g

每个Spark操作(例如collect)的所有分区的序列化结果的总大小限制。 应至少为1M,或0为无限。 如果总大小超过此限制,作业将被中止。 具有高限制可能导致驱动程序中的内存不足错误(取决于spark.driver.memory和JVM中对象的内存开销)。 设置适当的限制可以保护驱动程序免于内存不足错误。

spark.driver.memory

1g

用于驱动程序进程的内存量,即初始化SparkContext的位置。 (例如1g,2g)。注意:在客户端模式下,不能通过SparkConf直接在应用程序中设置此配置,因为驱动程序JVM已在此时启动。 相反,请通过--driver-memory命令行选项或在默认属性文件中进行设置。

spark.executor.memory

1g

每个执行者进程使用的内存量(例如2g,8g)。

spark.extraListeners

(none)

实现SparkListener的类的逗号分隔列表; 当初始化SparkContext时,将创建这些类的实例并向Spark的侦听器总线注册。 如果一个类有一个接受SparkConf的单参数构造函数,那么该构造函数将被调用; 否则,将调用一个零参数构造函数。 如果没有找到有效的构造函数,则SparkContext创建将失败并出现异常。

spark.local.dir

/tmp

用于Spark中“scratch”空间的目录,包括映射输出文件和存储在磁盘上的RDD。 这应该在您的系统中的快速本地磁盘上。 它也可以是不同磁盘上的多个目录的逗号分隔列表。 注意:在Spark 1.0及更高版本中,这将被集群管理器设置的SPARK_LOCAL_DIRS(独立,Mesos)或LOCAL_DIRS(YARN)环境变量覆盖。

spark.logConf

false

当SparkContext启动时,将有效的SparkConf记录为INFO。

spark.master

(none)

要连接到的集群管理器。 查看允许的master网址列表。

spark.submit.deployMode

(none)

Spark驱动程序的部署模式,“客户端”或“集群”,这意味着在集群中的一个节点上本地(“客户端”)或远程(“集群”)启动驱动程序。

 

 

 

除此之外,以下属性也可用,并且在某些情况下可能有用:

(2)运行时环境

 

属性名称                                                                                                                                                                                                 

默认值

                                                                                                   

注释

spark.driver.extraClassPath

(none)

额外的类路径条目,以前置到驱动程序的类路径。

注意:在客户端模式下,不能通过SparkConf直接在应用程序中设置此配置,因为驱动程序JVM已在此时启动。 相反,请通过--driver-class-path命令行选项或在默认属性文件中设置。

spark.driver.extraJavaOptions

(none)

传递给驱动程序的一个额外的JVM选项字符串。 例如,GC设置或其他日志记录。 请注意,使用此选项设置最大堆大小(-Xmx)设置是非法的。 最大堆大小设置可以在群集模式下使用spark.driver.memory设置,并通过客户端模式下的--driver-memory命令行选项设置。

注意:在客户端模式下,不能通过SparkConf直接在应用程序中设置此配置,因为驱动程序JVM已在此时启动。 相反,请通过--driver-java-options命令行选项或在默认属性文件中设置。

spark.driver.extraLibraryPath

(none)

设置在启动驱动程序JVM时要使用的特殊库路径。

注意:在客户端模式下,不能通过SparkConf直接在应用程序中设置此配置,因为驱动程序JVM已在此时启动。 相反,请通过--driver-library-path命令行选项或在默认属性文件中设置。

spark.driver.userClassPathFirst

false

(实验)当在驱动程序中加载类时,是否给用户添加的jar优先于Spark自己的jars。 此功能可用于减轻Spark的依赖关系和用户依赖关系之间的冲突。 它目前是一个实验功能。 这仅在集群模式下使用。

spark.executor.extraClassPath

(none)

额外的类路径条目,以前置到执行器的类路径。 这主要是为了向后兼容旧版本的Spark。 用户通常不需要设置此选项。

spark.executor.extraJavaOptions

(none)

传递给执行程序的额外JVM选项字符串。 例如,GC设置或其他日志记录。 请注意,使用此选项设置Spark属性或最大堆大小(-Xmx)设置是非法的。 Spark属性应使用SparkConf对象或与spark-submit脚本一起使用的spark-defaults.conf文件设置。 最大堆大小设置可以使用spark.executor.memory设置。

spark.executor.extraLibraryPath

(none)

设置启动执行程序JVM时要使用的特殊库路径。

spark.executor.logs.rolling.maxRetainedFiles

(none)

设置将由系统保留的最新滚动日志文件的数量。 较旧的日志文件将被删除。 默认情况下禁用。

spark.executor.logs.rolling.enableCompression

false

启用执行程序日志压缩。 如果启用,将压缩滚动的执行程序日志。 默认情况下禁用。

spark.executor.logs.rolling.maxSize

(none)

设置文件的最大大小(以字节为单位),执行器日志将以此为单位进行翻转。 默认情况下禁用滚动。 Seespark.executor.logs.rolling.maxRetainedFiles用于自动清除旧日志。

spark.executor.logs.rolling.strategy

(none)

设置执行器日志滚动的策略。 默认情况下禁用。 可以设置为“时间”(基于时间的滚动)或“尺寸”(基于尺寸的滚动)。 对于“time”,使用park.executor.logs.rolling.time.interval设置滚动间隔。 对于“size”,请使用spark.executor.logs.rolling.maxSize设置滚动的最大文件大小。

spark.executor.logs.rolling.time.interval

daily

Set the time interval by which the executor logs will be rolled over. Rolling is disabled by default. Valid values are daily, hourly, minutely or any interval in seconds. See spark.executor.logs.rolling.maxRetainedFiles for automatic cleaning of old logs.

spark.executor.userClassPathFirst

false

(实验)与spark.driver.userClassPathFirst相同的功能,但应用于执行程序实例。

spark.executorEnv.[EnvironmentVariableName]

(none)

将由EnvironmentVariableName指定的环境变量添加到执行程序进程。 用户可以指定多个这些来设置多个环境变量。

spark.python.profile

false

在Python worker中启用性能分析,配置文件结果将显示bysc.show_profiles(),否则它将在驱动程序退出之前显示。 它也可以通过sc.dump_profiles(path)转储到磁盘。 如果某些配置文件结果已手动显示,则它们不会在驱动程序退出之前自动显示。 默认情况下,将使用pyspark.profiler.BasicProfiler,但是可以通过将profiler类作为参数传递给SparkContext构造函数来覆盖。

spark.python.profile.dump

(none)

在驱动程序退出之前用于转储配置文件结果的目录。 结果将作为每个RDD的分隔文件转储。 它们可以通过ptats.Stats()加载。 如果指定,配置文件结果将不会自动显示。

spark.python.worker.memory

512m

在聚合期间每个python工作进程使用的内存量,格式与JVM内存字符串(例如512m,2g)相同。 如果在聚合期间使用的内存超过此数量,它将数据溢出到磁盘。

spark.python.worker.reuse

true

重用Python工作者或不。 如果是,它将使用固定数量的Python工作,不需要为每个任务fork()一个Python进程。 这将是非常有用的,如果有大型广播,那么广播将不需要从JVM转移到Python工作者的每个任务。


 

 

 

 

 

spark.files                                                                     

 以逗号分隔的文件列表,放在每个执行器的工作目录中。

spark.submit.pyFiles

以逗号分隔的.zip,.egg或.py文件列表放在Python应用程序的PYTHONPATH上。

spark.jars

以逗号分隔的本地jar的列表包含在驱动程序和执行程序类路径上。

spark.jars.packages

以逗号分隔的JAR的maven坐标列表,包括在驱动程序和执行程序类路径上。 将搜索本地maven仓库,然后maven中央和任何额外的远程存储库由spark.jars.ivy给出。 坐标的格式应为groupId:artifactId:version。

spark.jars.excludes

以逗号分隔的groupId:artifactId列表,在解析spark.jars.packages中提供的依赖关系时排除,以避免依赖冲突。

spark.jars.ivy

以逗号分隔的其他远程存储库列表,以搜索使用spark.jars.packages给出的坐标。

spark.pyspark.driver.python

Python二进制可执行文件用于PySpark的驱动程序。 (默认isspark.pyspark.python)

spark.pyspark.python

Python二进制可执行文件用于驱动程序和执行程序中的PySpark。

 

(3)suffer行为

 

 

(4)spark ui

 

(5)压缩和序列化

 

(6)内存管理

 

(7)Execution 行为

 

(8)网络

 

(9)任务计划

 

 

未完待续……

你可能感兴趣的:(Spark)