0
点赞
收藏
分享

微信扫一扫

[Spark参数配置]--1.6.0版本的参数配置


前言

   以下是整理的Spark中的一些配置参数,1.6.0版本的官方文档请参考​​Spark Configuration​​。

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

  • (1)Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置
  • (2)环境变量:可以通过每个节点的

​conf/spark-env.sh​

  • 脚本设置。例如IP地址、端口等信息
  • (3)日志配置:可以通过log4j.properties配置

Spark的属性

   Spark属性控制大部分的应用程序设置,并且为每个应用程序分别配置它。这些属性可以直接在​​SparkConf​​​上配置,然后传递给​​SparkContext​​。​​SparkConf​​ 允许你配置一些通用的属性(如master URL、应用程序名称等等)以及通过​​set()​​方法设置的任意键值对。例如,我们可以用如下方式创建一个拥有两个线程的应用程序。

val sparkConf = new SparkConf()
.setMaster("local[4]")
.setAppName("TestSpark")
.set("spark.executor.memory", "2g")
val sparkContext = new SparkContext(conf)

一、动态加载Spark属性

在一些情况下,你可能想在​​SparkConf​​中避免硬编码确定的配置。例如,你想用不同的master或者不同的内存数运行相同的应用程序。Spark允许你简单地创建一个空conf。

val sc = new SparkContext(new SparkConf())

然后我们可以在运行时设置变量:

spark-submit

Spark shell和​​spark-submit​​工具支持两种方式动态加载配置。第一种方式是命令行选项,例如​​--master​​,如上面shell显示的那样。​​spark-submit​​可以接受任何Spark属性,用​​--conf​​参数表示。但是那些参与Spark应用程序启动的属性要用特定的参数表示。运行​​./bin/spark-submit --help​​将会显示选项的整个列表。​​bin/spark-submit​​也会从​​conf/spark-defaults.conf​​中读取配置选项,这个配置文件中,每一行都包含一对以​​空格​​或者​​等号​​分开的键和值。例如:

spark.master            spark://5.6.7.8:7077
spark.executor.memory 512m
spark.eventLog.enabled true
spark.serializer org.apache.spark.serializer.KryoSerializer

任何标签指定的值或者在配置文件中的值将会传递给应用程序,并且通过​​SparkConf​​合并这些值。在​​SparkConf​​上设置的属性具有最高的优先级,其次是传递给​​spark-submit​​或者​​spark-shell​​的属性值,最后是​​spark-defaults.conf​​文件中的属性值。

优先级顺序:

SparkConf > CLI > spark-defaults.conf

二、查看Spark属性

在​​http://<driver>:4040​​上的应用程序Web UI在​​Environment​​标签中列出了所有的Spark属性。这对你确保设置的属性的正确性是很有用的。注意:​​只有通过spark-defaults.conf, SparkConf以及命令行直接指定的值才会显示​​。

对于其它的配置属性,我们可以认为程序用到了默认的值。

1、可用的属性

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

应用程序属性

属性名称

默认

含义

​spark.app.name      
                                               ​

                        (没有)

您的应用程序的名称。这将出现在用户界面和日志数据中。

​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​

(没有)

一个用逗号分隔的类实现的列表​​SparkListener​​; 当初始化SparkContext时,

这些类的实例将被创建并注册到Spark的监听器总线。如果一个类有一个接受SparkConf的单参数构造函数,

那么将会调用该构造函数;否则,将调用一个零参数的构造函数。如果没有找到有效的构造函数,

则SparkContext创建将失败并出现异常。

​spark.local.dir​

/ tmp目录

用于Spark中“scratch”空间的目录,包括映射输出文件和存储在磁盘上的RDD。

这应该在系统中的快速本地磁盘上。

它也可以是不同磁盘上多个目录的逗号分隔列表。注意:在Spark 1.0和更高版本中,将由群集管理器设置的SPARK_LOCAL_DIRS(Standalone,Mesos)或LOCAL_DIRS(YARN)环境变量覆盖。

​spark.logConf​

false

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

​spark.master​

(没 有)

要连接到的群集管理器。查看​​允许的主URL的​​列表 。

还有许多配置就不一一举例,可以参考官方文档:

​​https://spark.apache.org/docs/1.6.0/configuration.html​​​


举报

相关推荐

0 条评论