静态配置Spark属性
静态配置属性指的就是我们可以在代码中利用SparkCof
中的set()
方法来设置Spark
的属性,set()
方法接受接受的键值对SparkConf.set(key,value)
。具体的键值对是什么,下文会有介绍。
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local").setAppName("RDDTest")
sparkConf.set("spark.executor.memory","10g")
val sc = new SparkContext(sparkConf)
}
动态配置Spark属性
所谓的动态配置Spark
属性,其实就是我们在Driver
端运行spark-submit
的时候指定具体的Spark
参数属性。
Spark属性
Spark
属性我们可以分为应用程序属性、运行环境属性、Shuffle
行为属性、Spark UI
属性、压缩合序列化属性、内存管理属性、执行行为属性、网络属性、调度属性、动态分配属性、安全策略属性、SparkSQL
配置。SparkStreaming
配置
应用程序属性
应用属性是Spark
应用程序中必要的参数属性,这些属性大多数都具有合理的默认值。具体应用属性如下表所示。
属性名 | 默认值 | 解释 |
None | 你的spark应用程序的名字,这个名字可以出现在日子里或者UI界面上 | |
spark.dirver.cores | 1 | 在spark集群中,为每个Driver分配的CPU核数 |
spark.driver.maxResultSize | 1g | spark操作所有分区的序列化结果的总限制大小,如果大小超出这个限制,则中止作业。,这样可以保护驱动驱动程序内存不足。 |
spark.driver.memory | 1g | 指定驱动程序的内存容量 |
spark.executor.memory | 1g | 分配给每个Executor的内存容量 |
spark.local.dir | /tmp | 用于存放spark应用程序运行时的数据,例如map输出文件和RDDs在磁盘上的存储。这个目录可以用逗号分隔的多个目录。 |
spark.logConf | false | 是否记录sparkConf的所有INFO日志 |
spark.master | None | 指定spark的Master节点的 |
spark.submiy.deployModel | None | 配置提交spark应用程序是客户端模式还是集群模式 |
运行环境配置参数
spark.driver.extraClassPath | None | 指定Driver的额外的ClassPath。注意:在客户端模式下不能够使用SparkConf来设置此属性,但是可以在shell中用 --driver–class–path命令来指定Driver的ClassPath |
spark.driver.extraJavaOptions | None | 该参数的意义在于可以设置驱动程序上JVM的参数。注意1:此选项的设置-Xmx的大小是不允许的,但是在集群模式下我们可以用spark.driver.memory和在客户端模式下使用–driver–memory来设置-Xmx的大小。注意2:在客户端模式下不能够使用SparkConf来设置此属性,但是可以在shell中用 --driver–java–options命令来设置此属性 |
spark.executor.extraJavaOptions | None | 设置Executor上的JVM参数。例如GC参数和其他日志选项。注意1:此选项的设置-Xmx最大堆大小是不允许的,但是可以使用SparkConf或者spark-submit脚本或者在spark-default.conf中设置,也可以使用spark.executor.memory设置-Xmx最大堆大小。 |
spark.executor.log.rolling.maxRetainedFiles | None | 设置Executor滚动日志保留的最大数量,当超出限制是就删除旧日志,默认是不开启的 |
spark.executor.log.enableCompression | false | 是否启动Executor的日志压缩。如果启动就压缩Executor已滚动的日志,默认情况下是不开启的 |
spark.executor.logs.rolling.maxSize | None | 设置滚动日志文件的最大大小,字节为单位, |
spark.executor.logs.rolling.strategy | None | 设置日志的滚动策略。默认情况下是禁用的。两种滚动策略,一个是基于时间、一个是基于大小的。对于“时间”,用于spark.executor.logs.rolling.time.interval设置滚动间隔。对于“大小”,用于spark.executor.logs.rolling.maxSize设置滚动的最大文件大小。 |