属性名称 | 默认 | 含义 |
spark.executor.memory | 512 m | 分配给每个executor进程总内存(使用类似512m、2g格式) |
spark.executor.extraJavaOptions | 无 | 要传递给executor的额外 JVM 选项,注意不能使用它来设置Spark属性或堆大小设置。 |
spark.executor.extraClassPath | 无 | 追加到executor类路径中的附加类路径,主要为了兼容旧版本的Spark,通常不需要用户设置。 |
spark.executor.extraLibraryPath | 无 | 启动executor JVM 时要用到的特殊库路径。 |
spark.files.userClassPathFirst | false | executor在加载类的时候是否优先使用用户自定义的JAR包,而不是Spark带有的JAR包。此功能可以用于解决Spark依赖包和用户依赖包之间的冲突。目前,该属性只是一项试验功能。 |
属性名称 | 默认 | 含义 |
spark.shuffle.consolidateFiles | false | 如果设置为true,在shuffle时就合并中间文件,对于有大量Reduce任务的shuffle来说,合并文件可以提高文件系统性能。如果使用的是ext4 或 xfs 文件系统,建议设置为true;对于ext3,由于文件系统的限制,设置为true反而会使内核>8的机器降低性能。 |
spark.shuffle.spill | true | 如果设置为true,在shuffle期间通过溢出数据到磁盘来降低了内存使用总量,溢出阈值是由spark.shuffle.memoryFraction指定的。 |
spark.shuffle.spill.compress | true | 是否压缩在shuffle期间溢出的数据,如果压缩将使用spark.io.compression.codec。 |
| | |
spark.shuffle.compress | true | 是否压缩map输出文件,压缩将使用spark.io.compression.codec。 |
spark.shuffle.file.buffer.kb | 100 | 每个shuffle的文件输出流内存缓冲区的大小,以KB为单位。这些缓冲区可以减少磁盘寻道的次数,也减少创建shuffle中间文件时的系统调用。 |
spark.reducer.maxMbInFlight | 48 | 每个reduce任务同时获取map输出的最大大小 (以兆字节为单位)。由于每个map输出都需要一个缓冲区来接收它,这代表着每个 reduce 任务有固定的内存开销,所以要设置小点,除非有很大内存。 |
属性名称 | 默认 | 含义 |
spark.broadcast.compress | true | 是否在发送之前压缩广播变量。 |
spark.rdd.compress | false | 是否压缩序化的RDD分区 ,可以节省大量空间,但会消耗一些额外的CPU时间。 |
spark.io.compression.codec | org.apache.spark.io.
LZFCompressionCodec | 用于压缩内部数据如 RDD 分区和shuffle输出的编码解码器。Spark提供两个编解码器: org.apache.spark.io.LZFCompressionCodec和org.apache.spark.io.SnappyCompressionCodec。其中,Snappy提供更快速的压缩和解压缩,而LZF提供了更好的压缩比。 |
spark.io.compression.snappy
.block.size | 32768 | 使用Snappy编码解码器时,编码解码器使用的块大小 (以字节为单位) 。 |
spark.closure.serializer | org.apache.spark.serializer.
JavaSerializer | 用于闭包的序化器,目前只有支持Java序化器。 |
spark.serializer.
objectStreamReset | 10000 | 使用 org.apache.spark.serializer.JavaSerializer序化时,序化器缓存对象以防止写入冗余数据,这时停止这些对象的垃圾收集。通过调用重置序化器,刷新该信息就可以收集旧对象。若要关闭这重定期重置功能将其设置为< = 0 。默认情况下每10000个对象将重置序化器。 |
spark.kryo.referenceTracking | true | 当使用Kryo序化数据时,是否跟踪对同一对象的引用。如果你的对象图有回路或者同一对象有多个副本,有必要设置为true;其他情况下可以禁用以提高性能。 |
spark.kryoserializer.buffer.mb | 2 | 在Kryo 里允许的最大对象大小(Kryo会创建一个缓冲区,至少和序化的最大单个对象一样大) 。如果Kryo 出现缓冲区限制超出异常报错,增加这个值。注意,每个worker的每个core只有一个缓冲区。 |
属性名称 | 默认 | 含义 |
spark.default.parallelism | 本地模式: 本地机器内核数Mesos精细模式: 8
其他: 所有executor的core总数
或者2,以较大者为准
| 如果用户没设置,系统使用集群中运行shuffle操作的默认任务数(groupByKey、 reduceByKey等)。 |
spark.broadcast.factory | org.apache.spark.broadcast.
HttpBroadcastFactory | 广播的实现类 |
spark.broadcast.blockSize | 4096 | TorrentBroadcastFactory块大小(以kb为单位)。太大值在广播时降低并行性 (使速度变慢);太小值, BlockManager性能可能会受到冲击。 |
spark.files.overwrite | false | 通过 SparkContext.addFile() 添加的文件在目标中已经存在并且内容不匹配时,是否覆盖目标文件。 |
spark.files.fetchTimeout | false | 在获取由driver通过SparkContext.addFile() 添加的文件时,是否使用通信时间超时。 |
spark.storage.memoryFraction | 0.6 | Java堆用于cache的比例 |
spark.tachyonStore.baseDir | System.getProperty("java.io.tmpdir") | 用于存储RDD的techyon目录,tachyon文件系统的URL由spark.tachyonStore.url设置。也可以是逗号分隔的多个techyon目录。 |
spark.storage.
memoryMapThreshold | 8192 | 以字节为单位的块大小,用于磁盘读取一个块大小进行内存映射。这可以防止Spark在内存映射时使用很小块,一般情况下,对块进行内存映射的开销接近或低于操作系统的页大小。 |
spark.tachyonStore.url | tachyon://localhost:19998 | 基于techyon文件的URL。 |
spark.cleaner.ttl | 无限 | spark记录任何元数据(stages生成、task生成等)的持续时间。定期清理可以确保将超期的元数据遗忘,这在运行长时间任务是很有用的,如运行24/7的sparkstreaming任务。注意RDD持久化在内存中的超期数据也会被清理。 |
属性名称 | 默认 | 含义 |
spark.task.cpus | 1 | 为每个任务分配的内核数。 |
spark.task.maxFailures | 4 | job放弃task前该task的失败次数,该值>=1 |
spark.scheduler.mode | FIFO | SparkContext对job进行调度所采用的模式。
对于多用户可采用FAIR模式。 |
spark.cores.max | 未设置 | 当应用程序运行在Standalone集群或者粗粒度共享模式Mesos集群时,应用程序向集群请求的最大CPU内核总数(不是指每台机器,而是整个集群)。如果不设置,对于Standalone集群将使用spark.deploy.defaultCores中数值,而Mesos将使用集群中可用的内核。 |
spark.mesos.coarse | false | 如果设置为true,在Mesos集群中运行时使用粗粒度共享模式。 |
spark.speculation | false | 以下几个参数是关于Spark推测执行机制的相关参数。此参数设定是否使用推测执行机制,如果设置为true则spark使用推测执行机制,对于Stage中拖后腿的Task在其他节点中重新启动,并将最先完成的Task的计算结果最为最终结果。 |
spark.speculation.interval | 100 | Spark多长时间进行检查task运行状态用以推测,以毫秒为单位。 |
spark.speculation.quantile | 0.75 | 推测启动前,Stage必须要完成总Task的百分比。 |
spark.speculation.multiplier | 1.5 | 比已完成Task的运行速度中位数慢多少倍才启用推测 |
spark.locality.wait | 3000 | 以下几个参数是关于Spark数据本地性的相关参数。
本参数是以毫秒为单位启动本地数据task的等待时间,如果超出就启动下一本地优先级别的task。该设置同样可以应用到各优先级别的本地性之间(本地进程 -> 本地节点 -> 本地机架 -> 任意节点 ),当然,也可以通过spark.locality.wait.node等参数设置不同优先级别的本地性。 |
spark.locality.wait.process | spark.locality.wait | 本地进程级别的本地等待时间 |
spark.locality.wait.node | spark.locality.wait | 本地节点级别的本地等待时间 |
spark.locality.wait.rack | spark.locality.wait | 本地机架级别的本地等待时间 |
spark.scheduler.revive.interval | 1000 | 复活重新获取资源的Task的最长时间间隔(毫秒),发生在Task因为本地资源不足而将资源分配给其他Task运行后进入等待时间,如果这个等待时间内重新获取足够的资源就继续计算。 |
属性名称 | 默认 | 含义 |
spark.yarn.applicationMaster.waitTries | 10 | RM等待Spark AppMaster启动次数,也就是SparkContext初始化次数。超过这个数值,启动失败。 |
spark.yarn.submit.file.replication | 3 | 应用程序上载到HDFS的文件的复制因子 |
spark.yarn.preserve.staging.files | false | 设置为true,在job结束后,将stage相关的文件保留而不是删除。 |
spark.yarn.scheduler.heartbeat.interval-ms | 5000 | Spark AppMaster发送心跳信息给YARN RM的时间间隔 |
spark.yarn.max.executor.failures | 2倍于executor数 | 导致应用程序宣告失败的最大executor失败数 |
spark.yarn.historyServer.address | 无 | Spark history server的地址(不要加http://)。这个地址会在Spark应用程序完成后提交给YARN RM,然后RM将信息从RM UI写到history server UI上。
|