Spark配置详解

Spark配置详解

这些参数皆可在 spark-defaults.conf配置,或者部分可在 sparkconf().set设置

应用程序属性
属性名称默认值含义
spark.app.name(none)你的应用程序的名字。这将在UI和日志数据中出现
spark.driver.cores1driver程序运行需要的cpu内核数
spark.driver.maxResultSize1g每个Spark action(如collect)所有分区的序列化结果的总大小限制。设置的值应该不小于1m,0代表没有限制。如果总大小超过这个限制,程序将会终止。大的限制值可能导致driver出现内存溢出错误(依赖于spark.driver.memory和JVM中对象的内存消耗)。
spark.driver.memory512mdriver进程使用的内存数
spark.executor.memory512m每个executor进程使用的内存数。和JVM内存串拥有相同的格式(如512m,2g)
spark.extraListeners(none)注册监听器,需要实现SparkListener
spark.local.dir/tmpSpark中暂存空间的使用目录。在Spark1.0以及更高的版本中, 这个属性被SPARK_LOCAL_DIRS环境变量覆盖。
spark.logConffalse当SparkContext启动时,将有效的SparkConf记录为INFO。
spark.master(none)集群管理器连接的地方
运行环境
属性名称默认值含义
spark.driver.extraClassPath(none) 附加到driver的classpath的额外的classpath实体。
spark.driver.extraJ avaOptions(none)传递给driver的JVM选项字符串。例如GC设置或者其它日志设置。注意,在这个选项中设置Spark属性或者堆大小是不合法的。Spark属性需要用–driver-class-path设置。
spark.driver.extraLibraryPath(none)指定启动driver的JVM时用到的库路径
spark.driver.userClassPathFirstfalse(实验性)当在driver中加载类时,是否用户添加的jar比Spark自己的jar优先级高。这个属性可以降低Spark依赖和用户依赖的冲突。它现在还是一个实验性的特征。
spark.executor.extraClassPath(none)附加到executors的classpath的额外的classpath实体。这个设置存在的主要目的是Spark与旧版本的向后兼容问题。用户一般不用设置这个选项
spark.executor.extraJavaOptions(none)传递给executors的JVM选项字符串。例如GC设置或者其它日志设置。注意,在这个选项中设置Spark属性或者堆大小是不合法的。Spark属性需要用SparkConf对象或者spark-submit 脚本用到的spark-defaults.conf文件设置。堆内存可以通过spark.executor.memory设置
spark.executor.extraLibraryPath(none)指定启动executor的JVM时用到的库路径
spark.executor.logs.rolling.maxRetainedFiles(none)设置被系统保留的最近滚动日志文件的数量。更老的日志文件将被删除。默认没有开启。
spark.executor.logs.rolling.size.maxBytes(none)executor日志的最大滚动大小。默认情况下没有开启。值设置为字节
spark.executor.logs.rolling.strategy(none)设置executor日志的滚动(rolling)策略。默认情况下没有开 启。可以配置为time和size。对于time,用spark.executor.logs.rolling.time.interval设置滚动间隔;对于size,用spark.executor.logs.rolling.size.maxBytes设置最大的滚动大小
spark.executor.logs.rolling.time.inter valdailyexecutor日志滚动的时间间隔。默认情况下没有开启。合法的值是daily, hourly, minutely以及任意的秒。
spark.files.userClassPathFirstfalse(实验性)当在Executors中加载类时,是否用户添加的jar比Spark自己的jar优先级高。这个属性可以降低Spark依赖和用户依赖的冲突。它现在还是一个实验性的特征。
spark.python.worker.memory512m在聚合期间,每个python worker进程使用的内存数。在聚合期间,如果内存超过了这个限制,它将会将数据塞进磁盘中
spark.python.profilefalse在Python worker中开启profiling。通过sc.show_profiles() 展示分析结果。或者在driver退出前展示分析结果。可以通过sc.dump_profiles(path)将结果dump到磁盘中。如果一些分析结果已经手动展示,那么在driver退出前,它们再不会自动展示
spark.python.profile.dump(none)driver退出前保存分析结果的dump文件的目录。每个RDD都会分别dump一个文件。可以通过ptats.Stats()加载这些文件。如果指定了这个属性,分析结果不会自动展示
spark.python.worker.reusetrue是否重用python worker。如果是,它将使用固定数量的Python workers,而不需要为每个任务fork()一个Python进程。如果有一个非常大的广播,这个设置将非常有用。因为, 广播不需要为每个任务从JVM到Python worker传递一次
spark.executorEnv. [EnvironmentVaria bleName](none)通过EnvironmentVariableName添加指定的环境变量到executor进程。用户可以指定多个EnvironmentVariableName,设置多个环境变量
spark.mesos.executor.homedriver side SPARK_HOME设置安装在Mesos的executor上的Spark的目录。默认情况下,executors将使用driver的Spark本地(home)目录,这个目录对它们不可见。注意,如果没有通过 spark.executor.uri指定Spark的二进制包,这个设置才起作用spark.mesos.execu tor.memoryOverh ead executor memory * 0.07, 最小384m 这个值是spark.executor.memory的补充。它用来计算mesos 任务的总内存。另外,有一个7%的硬编码设置。最后的值将选择spark.mesos.executor.memoryOverhead或者spark.executor.memory的7%二者之间的大者

Shuffle行为

属性名称默认值含义
spark.reducer.max MbInFlight48从递归任务中同时获取的map输出数据的最大大小(mb)。因为每一个输出都需要我们创建一个缓存用来接收,这个设置代表每个任务固定的内存上限,所以除非你有更大的内存,将其设置小一点
spark.shuffle.block TransferServicenetty实现用来在executor直接传递shuffle和缓存块。有两种可用的实 现:netty和nio。基于netty的块传递在具有相同的效率情况下更简单
spark.shuffle.compresstrue 是否压缩map操作的输出文件。一般情况下,这是一个好的选择。
spark.shuffle.consolidateFilesfalse如果设置为”true”,在shuffle期间,合并的中间文件将会被创建。创建更少的文件可以提供文件系统的shuffle的效率。这些shuffle都伴随着大量递归任务。当用ext4和dfs文件系统时,推荐设置为”true”。在ext3中,因为文件系统的限制,这个选项可能机器(大于8核)降低效率
spark.shuffle.file.b uffer.kb32每个shuffle文件输出流内存内缓存的大小,单位是kb。这个缓存减少了创建只中间shuffle文件中磁盘搜索和系统访问的数量
spark.shuffle.io.maxRetries3Netty only,自动重试次数
spark.shuffle.io.numConnectionsPerPeer1Netty only
spark.shuffle.io.preferDirectBufstrueNetty only
spark.shuffle.io.retryWait5Netty only
spark.shuffle.managersort它的实现用于shuffle数据。有两种可用的实现:sort和hash。基于sort的shuffle有更高的内存使用率
spark.shuffle.memoryFraction0.2如果spark.shuffle.spill为true,shuffle中聚合和合并组操作使用的java堆内存占总内存的比重。在任何时候,shuffles使用的所有内存内maps的集合大小都受这个限制的约束。超过这个限制,spilling数据将会保存到磁盘上。如果spilling太过频繁,考虑增大这个值
spark.shuffle.sort.bypassMergeThreshold200(Advanced) In the sort-based shuffle manager, avoid merge- sorting data if there is no map-side aggregation and there are at most this many reduce partitions
spark.shuffle.spilltrue如果设置为”true”,通过将多出的数据写入磁盘来限制内存数。通过spark.shuffle.memoryFraction来指定spilling的阈值
spark.shuffle.spill.compresstrue在shuffle时,是否将spilling的数据压缩。压缩算法通过spark.io.compression.codec指定。

Spark UI

属性名称默认值含义
spark.eventLog.compressfalse是否压缩事件日志。需要spark.eventLog.enabled为true
spark.eventLog.dirfile:///tmp/ spark- eventsSpark事件日志记录的基本目录。在这个基本目录下,Spark为每个应用程序创建一个子目录。各个应用程序记录日志到直到的目录。用户可能想设置这为统一的地点,像HDFS一样,所以历史文件可以通过历史服务器读取
spark.eventLog.enabledfalse是否记录Spark的事件日志。这在应用程序完成后,重新构造web UI是有用的
spark.ui.killEnabledtrue运行在web UI中杀死stage和相应的job
spark.ui.port4040你的应用程序dashboard的端口。显示内存和工作量数据
spark.ui.retainedJobs1000在垃圾回收之前,Spark UI和状态API记住的job数
spark.ui.retainedStages1000在垃圾回收之前,Spark UI和状态API记住的stage数

压缩和序列化

在这里插入图片描述

运行时行为

在这里插入图片描述

网络

在这里插入图片描述

调度相关属性

在这里插入图片描述

Dynamic Allocation

在这里插入图片描述

安全

在这里插入图片描述

加密

在这里插入图片描述

Spark Streaming

在这里插入图片描述

集群管理 Spark On YARN

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值