【Spark学习】Apache Spark配置

Spark版本:1.1.1

本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接:

http://www.cnblogs.com/zhangningbo/p/4137969.html 

Spark配置

Spark属性

动态加载Spark属性

查看Spark属性

可用属性

大部分用于控制内部设置的属性都有合理的默认值。一部分最通用的选项设置如下:

应用程序属性

属性名称 默认值 含义
spark.app.name  (none)  应用程序名称。该参数的值会出现在UI和日志记录中。
spark.master  (none)  要连接的集群管理器。详见支持的masterURL列表
spark.executor.memory  512m  每个executor进程要用的内存量。与JVM内存字符串的格式相同(如,512m,2g)。
spark.serializer  org.apache.spark.serializer.JavaSerializer  用于序列化对象(以序列化形式通过网络发送或者在内存中缓存的对象)的类,默认的Java序列化适用于任何可序列化的Java对象,但速度很慢。因此,在需要较快速度的场合,我们推荐使用org.apache.spark.serializer.KryoSerializer并配置Kryo序列化。该参数的值可以是org.apache.spark.serializer的任何子类。
spark.kryo.registrator  (none)  如果你使用Kryo序列化,那么,需要设置该类以便使用Kryo来注册你的自定义类。该参数应当设置成一个扩展KryoRegistrator的类。详见调优指南
spark.local.dir  /tmp  在Spark中“草稿”空间所用的路径,包括存储于磁盘上的map输出文件和RDD。该参数值应当指向一个快速的本地磁盘路径。也可以是多个以逗号分隔的位于不同磁盘的路径列表。注意:从Spark1.0以后,该参数会被集群管理器所设置的SPARK_LOCAL_DIRS(Standalone,Mesos模式下)或者LOCAL_DIRS(YARN模式下)环境变量覆盖。
spark.logconf  false  当SparkContext启动时,以INFO日志级别记录有效的SparkConf设置。

除了以上属性,下面的属性也可用 ,而且在某些情形下会很有用:

运行时环境

属性名称 默认值 含义
spark.executor.extraJavaOptions (none) 传递给executor的额外JVM选项字符串。例如,GC设置或其他日志设置。注意,使用该选项来设置spark属性或heap大小是不合法的。Spark属性应当使用SparkConf对象设置,或者在脚本spark-submit中使用spark-defaults.conf文件。Heap大小可以用spark.executor.memory来设置。
spark.executor.extraClassPath (none) 追加到executor classpath中的额外classpath条目。该参数主要是为了与老版本的spark后向兼容。用户通常不需要设置该选项。
spark.executor.extraLibraryPath (none) 设置一个启动executor JVM时使用的特殊库路径。
spark.files.userClassPathFirst false (实验特性)当把用户添加的jar包和Spark自有jar包中的类加载到executor时,是否优先处理前者,再处理后者。该特性可以用于减少Spark依赖和用户依赖之间的冲突。当前该特性是实验性的。
spark.python.worker.memory 512m 聚集过程中每个python worker进程所用的内存量,与Java内存字符串的格式相同(如512m,2g)。如果进程在聚集期间所用的内存超过了该值,那么,就会把数据写入磁盘。
spark.executorEnv.[EnvironmentVariableName] (none) 把EnvironmentVariableName指定的环境变量添加到executor进程中。用户可以指定多个值来设置多个环境变量。
spark.mesos.executor.home driver side SPARK_HOME 设置Spark在Mesos集群中的executor主机上所安装的路径。默认情况下,executor简单地使用driver上的Spark home路径(executor不可见),注意,如果Spark二进制包不是通过spark.executor.uri来指定的,那么该值就是确切的。
spark.mesos.executor.memoryOverhead executor memory * 0.07,最小值为384 该值是spark.executor.memory的附加值,以MB为单位,用于计算Mesos任务的内存总量。384代表开销为384MB。此外,硬编码的7%为最小开销比例。最终的开销是二者中最大的,即max(spark.mesos.executor.memoryOverhead,spark.executor.memory * 7%)

Shuffle行为

属性名称 默认值 含义
     
     
     
     
     
     
     
     

Spark UI

属性名称 默认值 含义
     
     
     
     
     
     

压缩与序列化

属性名称 默认值 含义
     
     
     
     
     
     
     
     
     
     
     

执行行为

属性名称 默认值 含义
     
     
     
     
     
     
     
     
     
     
     
     
     
     

网络

属性名称 默认值 含义
     
     
     
     
     
     
     
     
     
     
     
     
     
     

调度

属性名称 默认值 含义
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

安全

属性名称 默认值 含义
     
     
     
     
     
     
     
     
     

Spark Streaming

属性名称 默认值 含义
     
     
     
     
     
     
     

 集群管理器

每个集群管理器都有额外的配置选项。这些配置参见每种模式各自的页面:

YARN

Mesos

Standalone

环境变量

某些Spark属性可以通过环境变量来配置,这些变量可以从conf/spark-env.sh脚本(windows平台为conf/spark-env.cmd)中读取。在Standalone和Mesos模式下,该脚本文件可以给出主机相关信息,比如主机名,也可以作为运行本地Spark应用程序或者子任务脚本时的源文件。

注意,conf/spark-env.sh默认安装情况下是不存在的。但是,你可以通过复制conf/spark-env.sh.template来创建它并确保其为可执行的。

以下变量可以在spark-env.sh文件中设置:

环境变量 含义
JAVA_HOME Java安装的位置(如果没有在默认的环境变量PATH中指定,就采用该值)
 PYSPARK_PYTHON  PySpark所用的Python二进制可执行文件
 SPARK_LOCAL_IP  主机所绑定的IP地址
 SPARK_PUBLIC_DNS  Spark程序通告给其他主机的主机名

除了以上变量,还有一些创建Spark Standalone集群脚本的选项,比如每台主机所用的CPU核数和最大内存。

由于spark-env.sh是脚本,所以有些选项可以通过程序来设置——例如,你可以通过查询指定网卡的IP地址来确定SPARK_LOCAL_IP。

配置日志记录

Spark使用log4j来记录日志。你可以在路径conf中添加log4j.properties文件来配置该功能。还有一种启动方法就是在原地复制log4j.properties.template文件。

覆盖配置路径

要指定其他配置路径而不使用默认的“SPARK_HOME/conf” ,你可以设置SPARK_CONF_DIR环境变量。Spark将会使用该变量指定路径中的配置文件(spark-defaults.conf,spark-env.sh,log4j.properties等)。

原文地址:https://www.cnblogs.com/zhangningbo/p/4137969.html