当前位置:   article > 正文

spark哪些代码在driver运行_Spark基础:常见配置(中)

--driver-class-path /home/hadoop/testjar/spark_filter.jar

cd5ca3b32d45fdc6ace1ecbbec179444.png

应用相关属性

  1. [重要] spark.app.name
  2. 默认值,无
  3. 应用的名字,在spark ui或者日志里都会用到
  4. [重要] spark.driver.cores
  5. 默认值,1
  6. driver程序在cluster模式下使用的核数
  7. spark.driver.maxResultSize
  8. 默认值,1g
  9. 限制 spark action操作获取的结果大小,至少1M,如果配置为0则代表无限制。当任务获取数据到达该限制时会停止。如果配置的过大,可能会造成jvm的oom。
  10. [重要] spark.driver.memory
  11. 默认值,1g
  12. driver进程使用的内存大小,当sparkContext初始化时,会基于改配置格式化。如果是client模式,这个配置仅能通过 SparkConfig 在代码中指定,因为JVM此时已经启动了。或者使用 --driver-memory 在程序提交时配置。
  13. spark.driver.memoryOverhead
  14. 默认值,driver内存*0.1
  15. driver使用的堆外内存大小,如果没有单位则默认为MB。
  16. [重要] spark.executor.memory
  17. 默认值,1g
  18. executor进程的内存大小
  19. spark.executor.pyspark.memory
  20. 默认值,无
  21. Pyspark每个executor的内存,如果没有配置Spark不会限制python内存的使用。
  22. spark.executor.memoryOverhead
  23. 默认值,executor内存*0.1
  24. executor分配的对外内存
  25. [重要] spark.extraListeners
  26. 默认值,无
  27. SparkListener实现类,多个用逗号拼接。当执行初始化时,会通过这个接口进行特定的触发操作。如果类由单个参数如SparkConf的构造器,则默认优先使用;否则默认调用无参的构造方法。如果没有找到合适的构造方法,会直接抛出异常。
  28. [重要] spark.local.dir
  29. 默认值,/tmp
  30. Spark的应用执行目录,里面会包含RDD的相关信息。这部分的数据应该存放在更快的本地磁盘,可以通过逗号拼接配置到多个磁盘中。在Spark1.0之后在集群模式下会被一下参数覆盖:standalone 下的 SPARK_LOCAL_DIRS,mesos 下的 MESOS_SANDBOX,yarn 下的 LOCAL_DIRS。
  31. spark.logConf
  32. 默认值,false
  33. 当SparkContext启动时,在日志中输出当前有效的SparkConf配置
  34. [重要] spark.master
  35. 默认值,无
  36. 本地模式如 local, local[*],Standalone如 spark://HOST:PORT,mesos如 mesos://HOST/PORT,yarn如 yarn-cluster, k8s如 k9s://HOST:PORT
  37. [重要] spark.submit.deployMode
  38. 默认值,无
  39. 应用部署的模式,如client和cluster
  40. spark.log.callerContext
  41. 默认值,无
  42. 应用信息记录到yarn rs日志 或 hdfs audit log中,长度依赖于hadoop中的配置, hadoop.caller.context.max.size
  43. spark.driver.supervise
  44. 默认值,false
  45. 如果为true, 当driver失败时会自动进行重启。仅对 standalone 或 mesos的cluster模式有影响。

运行时属性

  1. spark.driver.extraClassPath
  2. 默认值,无
  3. 其他的类加载路径,在client模式下需要在SparkConf中配置,因为driver启动的时候JVM已经启动了。或者在启动的时候配置 --driver-class-path 属性
  4. spark.driver.extraJavaOptions
  5. 默认值,无
  6. driver程序的JVM配置。比如GC配置或者日志配置等。不支持-Xmx这种配置,因为堆内存大小在cluster模式下可以通过 spark.driver.memory 属性配置,或者在client模式下,通过 --driver-memory 属性配置。
  7. spark.driver.extraLibraryPath
  8. 默认值,无
  9. driver启动的资源路径。
  10. spark.driver.userClassPathFirst
  11. 默认值,false
  12. 试验特性,配置是否用户定义的jar比默认的jar优先加载。这个特性可以帮助解决Spark的依赖冲突。该参数仅在 cluster 模式下支持。
  13. spark.executor.extraClassPath
  14. 默认值,无,executor的类加载目录
  15. spark.executor.extraJavaOptions
  16. 默认值,无
  17. spark.executor.extraLibraryPath
  18. 默认值,无
  19. spark.executor.logs.rolling.maxRetainedFiles
  20. 默认值,无,保留的日志文件数量
  21. spark.executor.logs.rolling.enableCompression
  22. 默认值,false,开启日志压缩
  23. spark.executor.logs.rolling.maxSize
  24. 默认值,无,日志轮转的大小
  25. spark.executor.logs.rolling.strategy
  26. 默认值,无,日志轮转的策略,如time时间轮转、size大小轮转
  27. spark.executor.logs.rolling.time.interval
  28. 默认值,daily
  29. 如果是时间轮转间隔。可用值 daily, hourly, minutely 或者 任意秒钟。
  30. spark.executor.userClassPathFirst
  31. 默认值,false
  32. 配置executor类加载顺序
  33. spark.executorEnv.[EnvironmentVariableName]
  34. 默认值,无
  35. 为Executor进程添加环境变量。
  36. spark.redaction.regex
  37. 默认值,secret 或 password
  38. 配置文件中哪些为敏感信息
  39. spark.python.profile
  40. 默认值,false
  41. 开启python优化。
  42. spark.python.profile.dump
  43. spark.python.worker.memory
  44. spark.python.worker.reuse
  45. spark.files
  46. 逗号拼接,上传到executor的文件
  47. spark.submit.pyFiles
  48. [重要] spark.jars
  49. driver和executor使用的jar
  50. spark.jars.packages
  51. maven中依赖的jar包,格式如 groupId:artifactId:version。
  52. spark.jars.excludes
  53. 排除的依赖jar,格式如 groupId:artifactId
  54. spark.jars.ivy
  55. 定义Ivy的用户目录
  56. spark.jars.ivySettings
  57. spark.jars.repositories
  58. maven仓库
  59. spark.pyspark.driver.python
  60. driver的python可执行环境
  61. spark.pyspark.python
  62. execturo的python可执行环境

Shuffle属性

  1. spark.reducer.maxSizeInFlight
  2. 默认值,48m
  3. 在reduce任务中,map输出的大小,如果没有特殊指定单位为MB。由于每个输出都需要创建buffer接收他们,因此需要为每个任务配置一个上限,避免占用太多内存。
  4. spark.reducer.maxReqsInFlight
  5. 默认值,Int.MaxValue
  6. 限制远程拉取数据的请求数量。随着集群中主机的增加,可能会导致某个节点有大量的连接。
  7. spark.reducer.maxBlocksInFlightPerAddress
  8. 默认值,Int.MaxValue
  9. 限制单个主机的连接数。
  10. spark.maxRemoteBlockSizeFetchToMem
  11. 默认值,Int.MaxValue - 512
  12. 远程block拉取数据的时候如果超过一定的大小则刷写到磁盘。
  13. spark.shuffle.compress
  14. 默认值,true
  15. shuffle的文件,是否启用压缩,压缩格式为 spark.io.compression.codec
  16. spark.shuffle.file.buffer
  17. 默认值,32k
  18. shuffle输出的文件大小。
  19. spark.shuffle.io.maxRetries
  20. 默认值,3
  21. Netty模式下,如果是IO相关的异常,进行的重启次数。适合由于超大shuffle导致长时间GC停顿或者网络暂时失联的问题。
  22. spark.shuffle.io.numConnectionsPerPeer
  23. 默认值,1
  24. Netty模式下,针对每个主机连接的数量,如果为1可以保证主机之间的重用。如果主机数量比较少,会导致并发不够充分,可以适当调大。
  25. spark.shuffle.io.preferDirectBufs
  26. 默认值,true
  27. Netty模式下,使用堆外内存进行数据缓存,避免垃圾回收。
  28. spark.shuffle.io.retryWait
  29. 默认值,5s
  30. Netty模式下,重试拉取数据的间隔。
  31. spark.shuffle.service.enabled
  32. 默认值,false
  33. 开启外部shuffle服务,需要在spark应用中配置 spark.dynamicAllocation.enabled 为true.
  34. spark.shuffle.service.port
  35. 默认值,7337
  36. spark.shuffle.service.index.cache.size
  37. 默认值,100m
  38. spark.shuffle.maxChunksBeingTransferred
  39. 默认值,Long.MAX_VALUE
  40. 同时shuffle的chunk数量。
  41. spark.shuffle.sort.bypassMergeThreshold
  42. 默认值,200
  43. 在sort-base shuffle manager中,避免没有map-side聚合时,分区数量过多
  44. spark.shuffle.spill.compress
  45. 默认值,true
  46. 在shuffle的时候开启压缩
  47. spark.shuffle.accurateBlockThreshold
  48. 默认值,100 * 1024 * 1024
  49. 统计阈值,HighlyCompressedMapStatus(不太了解)
  50. spark.shuffle.registration.timeout
  51. 默认值,5000
  52. 外部shuffle服务注册的超时时间
  53. spark.shuffle.registration.maxAttempts
  54. 默认值,3
  55. 外部shuffle服务,注册重试次数

Spark UI属性

  1. spark.eventLog.logBlockUpdates.enabled
  2. 默认值,false
  3. 是否为更新的日志创建独立的block
  4. spark.eventLog.longForm.enabled
  5. 默认值,false
  6. 如果配置为true,会使用长表格来显示日志
  7. [重要] spark.eventLog.compress
  8. 默认值,false
  9. 日志是否启用压缩
  10. [重要] spark.eventLog.dir
  11. Spark记录日志的目录,子目录为appid,用户可以通过配置这个选项把日志搜集汇总到hfds,从而使用history server统一监控
  12. [重要] spark.eventLog.enabled
  13. 默认值,false
  14. 是否开启spark的日志记录,有助于应用结束后重新spark ui
  15. spark.eventLog.overwrite
  16. 默认值,false
  17. 是否覆盖现有的文件
  18. spark.eventLog.buffer.kb
  19. 默认值,100k
  20. 输出流的buffer大小
  21. spark.ui.dagGraph.retainedRootRDDs
  22. 默认值,Int.MaxValue
  23. 垃圾回收前,记录的DAG节点状态数量
  24. spark.ui.enabled
  25. 默认值,true
  26. 是否开启spark ui
  27. spark.ui.killEnabled
  28. 默认值,true
  29. 在ui中允许kill job和stage
  30. spark.ui.liveUpdate.period
  31. 默认值,100ms
  32. 更新存活记录的时间,-1为永不更新
  33. spark.ui.liveUpdate.minFlushPeriod
  34. 默认值,1s
  35. spark ui刷新的时间间隔
  36. spark.ui.port
  37. 默认值,4040
  38. spark.ui.retainedJobs
  39. 默认值,1000
  40. spark ui垃圾回收前保留的任务数量。
  41. spark.ui.retainedStages
  42. 默认值,1000
  43. spark.ui.retainedTasks
  44. 默认值,100000
  45. spark.ui.reverseProxy
  46. 默认值,false
  47. 使用代理访问ui
  48. spark.ui.reverseProxyUrl
  49. 代替url
  50. spark.ui.showConsoleProgress
  51. 默认值,false
  52. 在控制台显示进度
  53. spark.worker.ui.retainedExecutors
  54. 默认值,1000
  55. spark.worker.ui.retainedDrivers
  56. 默认值,1000
  57. spark.sql.ui.retainedExecutions
  58. 默认值,1000
  59. spark.streaming.ui.retainedBatches
  60. 默认值,1000
  61. spark.ui.retainedDeadExecutors
  62. 默认值,100
  63. spark.ui.filters
  64. 进入spark ui时使用的 servlet filter,比如
  65. spark.ui.filters=com.test.filter1
  66. spark.com.test.filter1.param.name1=foo
  67. spark.com.test.filter1.param.name2=bar
  68. spark.ui.requestHeaderSize
  69. 默认值,8k
  70. 允许的Http头大小

压缩和序列化

  1. [重要] spark.broadcast.compress
  2. 默认值,true
  3. 广播的时候启用压缩,压缩格式为 spark.io.compression.codec
  4. [重要] spark.checkpoint.compress
  5. 默认值,false
  6. 是否针对RDD检查点使用压缩。
  7. [重要] spark.io.compression.codec
  8. 默认值,lz4
  9. spark内部使用的压缩格式,包括RDD分区、事件日志、广播变量、shuffle输出等。默认Spark提供了,lz4, lzf, snappy, zstd等,也可以使用对应的全名:
  10. org.apache.spark.io.LZ4CompressionCodec
  11. org.apache.spark.io.LZFCompressionCodec
  12. org.apache.spark.io.SnappyCompressionCodec
  13. org.apache.spark.io.ZStdCompressionCodec
  14. spark.io.compression.lz4.blockSize
  15. 默认值,32k
  16. spark.io.compression.snappy.blockSize
  17. 默认值,32k
  18. spark.io.compression.zstd.level
  19. 默认值,1
  20. spark.io.compression.zstd.bufferSize
  21. 默认值,32k
  22. spark.kryo.classesToRegister
  23. spark.kryo.referenceTracking
  24. 默认值,true
  25. spark.kryo.registrationRequired
  26. 默认值,false
  27. spark.kryo.registrator
  28. spark.kryo.unsafe
  29. 默认值,false
  30. spark.kryoserializer.buffer.max
  31. 默认值,64m
  32. spark.kryoserializer.buffer
  33. 默认值,64k
  34. [重要] spark.rdd.compress
  35. 默认值,false
  36. 是否针对RDD分区进行压缩
  37. [重要] spark.serializer
  38. 默认值,org.apache.spark.serializer.JavaSerializer
  39. 网络传输或缓存时的序列化的方式
  40. spark.serializer.objectStreamReset
  41. 默认值,100
  42. 使用JavaSerializer序列化对象时,缓存对象的数量。

执行属性

  1. spark.broadcast.blockSize
  2. 默认值,4m
  3. TorrentBroadcastFactory中block的大小。太大的值会导致广播的时候并行度低,如果太小BlockManager可能会遇到瓶颈。
  4. spark.broadcast.checksum
  5. 默认值,true
  6. 是否针对广播开启checksum,开启后可以帮助检测数据的完整性,但是传输数据的时候会消耗一部分计算和传输资源。如果网络传输有其他的可靠机制,那么可以关闭该选项。
  7. [重要] spark.executor.cores
  8. 默认值,在yarn模式下为1,其他的资源调度系统取决于机器的核数。这个核数是针对每个executor来说的。
  9. [重要] spark.default.parallelism
  10. 对于分布式的shuffle操作,如reduceByKey和join,控制对应的最大分区数。对于parallelize操作,则取决于资源调度系统。对于Local模式,取决于本地的核数;对于mesos默认是8;对于其他的调度框架是executor的核数或2
  11. spark.executor.heartbeatInterval
  12. 默认值,10s
  13. executor跟driver之间的心跳间隔,心跳可以保证driver知道executor是否还在存活,并更新对应的task信息。这个参数需要低于 spark.network.timeout 参数。
  14. spark.files.fetchTimeout
  15. 默认值,60s
  16. 当时driver程序使用SparkContext.addFile()获取文件时的超时时间
  17. spark.files.useFetchCache
  18. 默认值,true
  19. 如果开启配置,拉取文件的时候将会使用本地缓存,这在相同的应用由多个executor运行在相同的主机时会提高性能。如果设置为false,缓存优化会被关闭,所有的executor都会通过复制文件来进行文件拉取。这个配置在NFS文件系统时需要禁用。
  20. spark.files.overwrite
  21. 默认值,false
  22. 在使用SparkContext.addFile时,当目标文件已经存在是否直接覆盖。
  23. spark.files.maxPartitionBytes
  24. 默认值,128MB
  25. 单个分区读取的最大字节数。
  26. spark.files.openCostInBytes
  27. 默认值,4MB
  28. 小于这个大小的文件会合并到一个分区,避免碎片任务
  29. spark.hadoop.cloneConf
  30. 默认值,false
  31. 开启后会为每个Task克隆一个新的hadoop Configuration对象,这样可以解决线程安全问题。为了避免额外的性能开销,默认是关闭的。
  32. spark.hadoop.validateOutputSpecs
  33. 默认值,true
  34. 开启后,会校验输出规范,检查输出目录是否存在,使用saveAsHadoopFile。当在预创建输出目录时,可以关闭该选项。一般建议用户如果不是为了保证兼容性,不要关闭这个配置。这个配置在Spark Streaming中会被忽略,因为数据会通过检查点进行恢复。
  35. spark.storage.memoryMapThreshold
  36. 默认值,2m
  37. Spark memory maps从磁盘读取的大小,这样避免Spark读取太多碎片文件。
  38. spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version
  39. 默认值,1
  40. 文件输出提交的算法,可以是12。当为2时,有更高的性能,但是版本1可能会有更好的容错。

网络

  1. spark.rpc.message.maxSize
  2. 默认值,128
  3. executor和driver之间发送消息的大小。
  4. spark.blockManager.port
  5. 随机
  6. blockManager监听的地址
  7. spark.driver.blockManager.port
  8. driver监听的block manager端口
  9. spark.driver.bindAddress
  10. driver主机,这个配置会覆盖 SPARK_LOCAL_IP 环境变量。
  11. spark.driver.host 主机名
  12. spark.driver.port
  13. spark.network.timeout
  14. 默认值,120s
  15. 默认网络交互超时时间,下面的配置如果没有配,都会使用这个时间。
  16. spark.core.connection.ack.wait.timeout,
  17. spark.storage.blockManagerSlaveTimeoutMs,
  18. spark.shuffle.io.connectionTimeout,
  19. spark.rpc.askTimeout or spark.rpc.lookupTimeout
  20. spark.port.maxRetries
  21. 默认值,16
  22. 绑定端口时最大重试次数,如果配置为0,每次端口占用的时候都会自增加1.
  23. spark.rpc.numRetries
  24. 默认值,3
  25. Rpc重试次数
  26. spark.rpc.retry.wait
  27. 默认值,3s
  28. 重试间隔时间
  29. spark.rpc.askTimeout
  30. 默认值,spark.network.timeout
  31. 请求操作超时时间
  32. spark.rpc.lookupTimeout
  33. 默认值,120s
  34. 远程查找超时时间
  35. spark.core.connection.ack.wait.timeout
  36. 默认值,spark.network.timeout
  37. 连接超时时间,避免因为长时间GC导致超时。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/66439
推荐阅读
相关标签
  

闽ICP备14008679号