Spark参数详解 一(Spark1.6)
Spark参数详解 (Spark1.6)
参考文档:Spark官网
在Spark的web UI在“Environment”选项卡中列出Spark属性。这是一个很有用的地方,可以检查以确保属性设置正确。注意,只有通过spark-defaults.conf, SparkConf, 或者 command line配置过的属性才会出现 。对于所有其他配置属性,控制内部设置的大多数属性具有合理的默认值,在没有额外配置的额情况下,可以假定使用默认值。
应用级别的参数
参数名称 | 默认值 | 释义 | 注释 |
---|---|---|---|
spark.app.name | none | 应用程序的名称。这将出现在UI和日志数据中 | |
spark.driver.cores | 1 | 用于驱动进程的内核数,仅在集群模式下使用 | |
spark.driver.maxResultSize | 1g | 每个Spark动作(例如collect)的所有分区序列化结果的总大小限制。应该是至少1M,或者是0。如果作业的总大小超过此限制,则将中止作业。 | 有一个高的限制可能会在驱动程序(取决于spark.driver.memory 和 JVM中对象的内存开销)中导致内存不足错误。内存和JVM中对象的内存开销)。设置适当的限制可以保护驱动程序免受内存不足的错误。 |
spark.driver.memory | 1g | 用于驱动进程的内存数量,即初始化SparkContext的地方。(例如1 g, 2 g)。 | 注意:在客户端模式下,这个配置不能在应用程序中通过SparkConf直接设置,因为驱动程序JVM已经在此时启动了。相反,请通过——驱动程序内存命令行选项或在默认属性文件中设置它。 |
spark.executor.memory | 1g | 每个执行程序executor要使用的内存量(例如2g、8g)。 | |
spark.extraListeners | none | 实现SparkListener的类的逗号分隔列表;在初始化SparkContext时,这些类的实例将被创建并注册到Spark的侦听器总线。 | 这个没看懂~ |
spark.local.dir | /tmp | 用于在Spark中“scratch”空间的目录,包括存储在磁盘上的映射输出文件和rdd。这应该在您系统中的一个快速本地磁盘上。它也可以是不同磁盘上多个目录的逗号分隔列表。 | 注意:在Spark 1.0及以后版本中,这将由SPARK_LOCAL_DIRS(Standalone, Mesos)或LOCAL_DIRS (YARN) 环境变量覆盖。 |
spark.logConf | false | 在启动SparkContext时,将有效的SparkConf记录为信息。 | |
spark.master | none | 要连接的集群管理器。 |
除此之外,以下属性也可用,在某些情况下可能有用:
运行时环境相关参数
参数名称 | 默认值 | 释义 | 注释 |
---|---|---|---|
spark.driver.extraClassPath | none | 在驱动程序的类路径之前添加额外的类路径条目。 | 注意:在客户端模式下,这个配置不能在应用程序中通过SparkConf直接设置,因为驱动程序JVM已经在此时启动了。通过 --driver-class-path或在默认属性文件中配置。这参数么得用过~ |
spark.driver.extraJavaOptions | none | 一串额外的JVM选项传递给驱动程序。例如,GC设置或其他日志记录。 | 在客户端模式下,这个配置不能在应用程序中通过SparkConf直接设置,因为驱动程序JVM已经在此时启动了,可以通过 --driver-java-options或配置文件里面配置,这参数么得用过~ |
spark.driver.extraLibraryPath | none | 设置启动驱动程序JVM时要使用的特殊库路径。 | 在客户端模式下,这个配置不能在应用程序中通过SparkConf直接设置,因为驱动程序JVM已经在此时启动了。可以通过 --driver-library-path 或配置文件里面配置,这参数么得用过~ |
spark.driver.userClassPathFirst | false | (实验)在驱动程序中加载类时,是否将用户添加的jar优先于Spark自己的jar。 | 此特性可用于缓解Spark的依赖项与用户依赖项之间的冲突。这是目前的一个实验特性。这只在集群模式下使用。这参数么得用过~,基本打包spark相关的包都已经去掉了,预防针冲突,好像新的版本可以用了,下次确认下。 |
spark.executor.extraClassPath | none | 附加的类路径条目,以作为执行器类路径的前缀。 | 这主要是为了向后兼容旧版的Spark而存在的。用户通常不需要设置这个选项。这参数么得用过~ |
spark.executor.extraJavaOptions | none | 要传递给执行器的额外JVM选项字符串。例如,GC设置或其他日志记录。 | 这参数么得用过~ |
spark.executor.extraLibraryPath | none | 设置启动执行器JVM时要使用的特殊库路径。 | 这参数么得用过~ |
spark.executor.logs.rolling.maxRetainedFiles | none | 设置系统将保留的最新滚动日志文件的数量。旧的日志文件将被删除。默认情况下禁用。 | 这参数么得用过~ |
spark.executor.logs.rolling.maxSize | none | 设置执行程序日志将被滚动的文件的最大大小。默认情况下禁用滚动。 | 这参数么得用过~ |
spark.executor.logs.rolling.strategy | none | 设置执行器日志的滚动策略。默认情况下,它是禁用的。它可以设置为“时间”(基于时间的滚动)或“大小”(基于大小的滚动) | 对于“time”,使用spark.executor.log . roll.time .interval来设置滚动间隔。对于“size”,请使用spark.executor.log .rolling.size。设置滚动的最大文件大小。 |
spark.executor.logs.rolling.time.interval | daily | 设置执行器日志将被滚动的时间间隔。默认情况下禁用滚动 | 有效值为每日、小时、分钟或以秒为单位的任何间隔( daily, hourly, minutely or any interval in seconds) |
spark.executor.userClassPathFirst | false | 功能与spark.driver.userClassPathFirst相似,但是作用于executor | 这参数么得用过~ |
spark.executorEnv.[EnvironmentVariableName] | none | 将EnvironmentVariableName 指定的环境变量添加到执行程序进程中。 | 用户可以指定多个环境变量来设置多个环境变量。 |
Shuffle操作相关参数
参数名称 | 默认值 | 释义 | 注释 |
---|---|---|---|
spark.reducer.maxSizeInFlight | 48m | 从每个reduce任务同时获取的映射输出的最大大小。 | 因为每个输出都需要我们创建一个缓冲区来接收它,所以每个reduce任务的内存开销都是固定的,所以除非您有大量的内存,否则请保持较小。 |
spark.shuffle.compress | true | 是否压缩映射输出文件。一般来说是个好主意。 | 压缩将使用spark.io.compression.codec。 |
spark.shuffle.file.buffer | 32k | 每个shuffle文件输出流的内存缓冲区大小。 | 这些缓冲区减少了在创建shuffle文件时磁盘查找和系统调用的数量。 |
spark.shuffle.io.maxRetries | 3 | (Netty only)如果设置为非零值,则会自动重试由于io相关异常而失败的获取。 | 这种重试逻辑有助于在面对长时间GC暂停或短暂的网络连接问题时稳定大型shuffle操作。 |
spark.shuffle.io.numConnectionsPerPeer | 1 | 主机之间的连接被重用数量 | 对于拥有许多硬盘和少量主机的集群,这可能导致并发性不足,无法使所有磁盘饱和,因此用户可能会考虑增加这个值。,以减少大型集群的连接累积。 |
spark.shuffle.io.preferDirectBufs | true | (仅适用于Netty)堆外缓冲区用于减少shuffle和cache 块传输期间的垃圾收集。 | 对于堆外内存受到严格限制的环境,用户可能希望关闭这个选项,以强制Netty的所有分配都处于堆上。 |
spark.shuffle.io.retryWait | 5s | (Netty only)两次读取之间等待的时间。 | 默认情况下,重试导致的最大延迟为15秒,计算方法为maxRetries * retryWait。 |
spark.shuffle.manager | sort | 用于shuffle数据的实现。有两种实现可用:sort 和 hash. | 基于排序的shuffle内存效率更高,从1.2开始就是默认选项。 |
spark.shuffle.service.enabled | false | 启用外部shuffle服务。该服务保存了由executors 编写的shuffle文件,以便可以安全地删除executors 。 | spark.dynamicAllocation.enabled 必须设为"true",必须设置外部shuffle服务才能启用它。详情查看动态分配配置和设置文档 |
spark.shuffle.service.port | 7337 | 运行外部shuffle服务的端口。 | |
spark.shuffle.sort.bypassMergeThreshold | 200 | (高级)在基于排序的shuffle manager中,如果没有映射端聚合且最多有次参数这么多的reduce分区,避免合并排序数据。 | |
spark.shuffle.spill.compress | true | 是否要压缩在shuffle过程中溢出的数据。压缩将使用spark.io.compression.codec。 | 默认即可~ |
Spark UI相关参数
参数名称 | 默认值 | 释义 | 注释 |
---|---|---|---|
spark.eventLog.compress | false | 是否压缩已记录的事件 | spark.eventLog.enabled 为"true" |
spark.eventLog.dir | file:///tmp/spark-events | spark.eventLog.enabled 为"true",记录Spark事件的基本目录 | 在这个基本目录中,Spark为每个应用程序创建一个子目录,并在这个目录中记录特定于应用程序的事件。用户可能希望将其设置为一个统一的位置,比如一个HDFS目录,以便历史服务器可以读取历史文件。 |
spark.eventLog.enabled | false | 是否记录Spark事件 | 对于应用程序完成后重构Web UI非常有用。 |
spark.ui.killEnabled | true | 允许从web ui中删除阶段和相应的作业。 | |
spark.ui.port | 4040 | 应用程序页面的端口,页面显示内存和工作负载数据。 | |
spark.ui.retainedJobs | 1000 | 在垃圾收集之前,Spark UI和status APIs记住了多少作业。 | |
spark.ui.retainedStages | 1000 | 在垃圾收集之前,Spark UI和status APIs记住了多少个阶段。 | |
spark.worker.ui.retainedExecutors | 1000 | 在垃圾收集之前,Spark UI和status APIs记住了多少已完成的执行器。 | |
spark.worker.ui.retainedDrivers | 1000 | 在垃圾收集之前,Spark UI和status APIs记住了多少已完成的驱动程序。 | |
spark.sql.ui.retainedExecutions | 1000 | 在垃圾收集之前,Spark UI和status APIs记录执行了多少次。 | |
spark.streaming.ui.retainedBatches | 1000 | 在垃圾收集之前,Spark UI和status APIs要记住多少个已完成的批处理。 |
压缩和序列化相关参数
参数名称 | 默认值 | 释义 | 注释 |
---|---|---|---|
spark.broadcast.compress | true | 是否在发送广播变量之前压缩它们。 | 一般来说是个好主意。 |
spark.closure.serializer | org.apache.spark.serializer.JavaSerializer | 用于闭包的序列化器类。 | 目前只支持Java序列化器。 |
spark.io.compression.codec | snappy | 用于压缩的编解码器 lz4、lzf、 snappy.。 | 可指定编解码器,例如。org.apache.spark.io.LZ4CompressionCodec, org.apache.spark.io.LZFCompressionCodec, and org.apache.spark.io.SnappyCompressionCodec. |
spark.io.compression.lz4.blockSize | 32k | 在使用LZ4压缩编解码器的情况下,用于LZ4压缩的块大小。 | 当使用LZ4时,降低这个块的大小也会降低洗牌内存的使用。 |
spark.io.compression.snappy.blockSize | 32k | 在使用Snappy压缩编解码器的情况下,用于Snappy压缩的块大小。 | 当使用Snappy时,降低这个块的大小也会降低洗牌内存的使用。 |
spark.kryo.classesToRegister | none | 如果使用Kryo序列化,请提供一个以逗号分隔的自定义类名列表,以便向Kryo注册。 | 有关更多细节,请参阅调优指南。 |
spark.kryo.referenceTracking | true (false when using Spark SQL Thrift Server) | 是否在使用Kryo序列化数据时跟踪对同一对象的引用. | 如果对象图具有循环,这是必要的,如果对象图包含同一对象的多个副本,这对于提高效率非常有用。如果您知道情况并非如此,可以禁用它来提高性能。 |
spark.kryo.registrationRequired | spark.kryo.registrationRequired | 是否需要向Kryo注册。 | 如果设置为“true”,如果未注册的类被序列化,Kryo将抛出异常。如果设置为false(默认值),Kryo将与每个对象一起写入未注册的类名。编写类名会导致显著的性能开销,因此启用此选项可以严格确保用户在注册时没有遗漏类。 |
spark.kryo.registrator | none | 如果使用Kryo序列化,请用Kryo设置这个类,以便注册自定义类。 | 如果需要以自定义方式注册类,例如指定自定义字段序列化器,则此属性非常有用。否则的话,spark。kryo。classestoregister更简单。它应该被设置为扩展KryoRegistrator的类。有关更多细节,请参阅调优指南。 |
spark.kryoserializer.buffer.max | 64m | Kryo序列化缓冲区的允许最大值。它必须大于您试图序列化的任何对象。 | 如果您在Kryo中得到一个"buffer limit exceeded" 异常,请增加这个值。 |
spark.kryoserializer.buffer | 64k | Kryo的序列化缓冲区的初始大小。 | 请注意,每个worker上的每个核心都有一个缓冲区。如果需要,这个缓冲区将增长为spark.kryoserializer.buffer.max。 |
spark.rdd.compress | false | 是否压缩序列化的RDD分区(例如StorageLevel.MEMORY_ONLY_SER)。 | 可以节省大量空间的代价是一些额外的CPU时间。 |
spark.serializer | org.apache.spark.serializer.JavaSerializer | 序列化将通过网络发送或需要以序列化形式缓存的对象的类 | Java序列化的默认值适用于任何可序列化的Java对象,但是速度非常慢。 |
使用Spark SQL Thrift Server时org.apache.spark.serializer.KryoSerializer | 所以我们建议使用org.apache.spark.serializer。在需要速度时配置Kryo序列化器。可以是org.apache.spark.Serializer的任何子类。 | ||
spark.serializer.objectStreamReset | 100 | 序列化时使用org.apache.spark.serializer.JavaSerializer,序列化器缓存对象以防止写入冗余数据,但是这会停止这些对象的垃圾收集。 | 通过调用'reset',您可以从序列化器中刷新该信息,并允许收集旧对象。要关闭这个周期复位设置为-1。默认情况下,它将每100个对象重置序列化器。 |
本文是我在对spark调优过程中,发现有很多参数没用过甚至没见过,本着学习的心态整理了一份参数说明,此为第一部分,后续的会尽快更新!!!
转载请注明出处~~~
Spark参数详解 一(Spark1.6)的更多相关文章
- [spark]-Spark2.x集群搭建与参数详解
在前面的Spark发展历程和基本概念中介绍了Spark的一些基本概念,熟悉了这些基本概念对于集群的搭建是很有必要的.我们可以了解到每个参数配置的作用是什么.这里将详细介绍Spark集群搭建以及xml参 ...
- Spark:常用transformation及action,spark算子详解
常用transformation及action介绍,spark算子详解 一.常用transformation介绍 1.1 transformation操作实例 二.常用action介绍 2.1 act ...
- Nginx主配置参数详解,Nginx配置网站
1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...
- iptables参数详解
iptables参数详解 搬运工:尹正杰 注:此片文章来源于linux社区. Iptalbes 是用来设置.维护和检查Linux内核的IP包过滤规则的. 可以定义不同的表,每个表都包含几个内部的链,也 ...
- chattr的常用参数详解
chattr的常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,有的运维工程师不得不和开发和测试打交道,在我们公司最常见的就是部署接口.每天每个人部署的 ...
- mha配置参数详解
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- $.ajax()方法所有参数详解;$.get(),$.post(),$.getJSON(),$.ajax()详解
[一]$.ajax()所有参数详解 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注 ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- 【转】jqGrid 各种参数 详解
[原文]http://www.cnblogs.com/younggun/archive/2012/08/27/2657922.htmljqGrid 各种参数 详解 JQGrid JQGrid是一个 ...
随机推荐
- Tasklist使用详解
用jstat查看jvm内存的使用的情况时,因为是windows机器,不能使用top命令方便的查出来,进程好在网上搜了一下看到了在windows原来使用的是tasklist 特意将tasklist的用法 ...
- 如何用EFCore Lazy Loading实现Entity Split
α角 与 β角 支持 现实生活 的 计算机系统,总有着两大偏差,第一个是 现实生活 与 计算机系统 的α角,另外一个是计算机系统的 逻辑设计 与 物理设计 的β角.举个栗子: α角:假设某个公司的商业 ...
- 浅析Hashmap和Hashtable
一.Hashmap不是线程安全的,而Hashtable是线程安全的 通过查看源码可以发现,hashmap类中的方法无synchronized关键字,而hashtable类中的方法有synchroniz ...
- Git 转载
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 关于Appium android input manager for Unicode 提示信息
Appium调完输入法后,会弹出 Appium android input manager for Unicode 提示信息相关的提示信息,每次运行如此,如下图 网络上查找一遍,基本解决了,只要在设 ...
- node.js学习三--------------------- http服务器模块的搭建
/** * http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器 */ // 导包 const http=require("http"); //创建 ...
- 获取百度地图POI数据一(详解百度返回的POI数据)
POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数 ...
- python单列模式
单例模式:就是永远用一个对象的实例 初级版 #初级版 class Foo(object): instance=None def __init__(self): pass @classmethod # ...
- ORACLE一个TNS配置错误
oracle tns配置文件格式如下 RSXT = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.26.3. ...
- elasticsearch(4) 轻量搜索
一 空搜索 搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档: 示例 GET 127.0.0.1:9200/_search 响应 { , "tim ...