Spark config配置项 一览

Spark config配置项 一览

  • env配置
  • 序列化配置
  • Rpc.Netty
  • yarn lib中的jar和用户自己的高版本jar 处理加载 先后顺序(spark程序jar与spark lib jar冲突,加载顺序)
  • 广播
  • 内存划分
  • shuffle
  • ClassLoader
  • BlockMananger

env配置

SPARK_PRINT_LAUNCH_COMMAND -> true 表示在spark-submit 提交job的时候是否打印LaunchCommand
SPARK_SUBMIT_OPTS -> 表示在spark-submit 配置的优化参数 在 ${JAVA_HOME}/bin/java [java_opt] -cp xxx 后面会追加上

序列化配置

spark.serializer:
默认的是 org.apache.spark.serializer.JavaSerializer
可选的是org.apache.spark.serializer.KryoSerializer

Rpc.Netty

spark.rpc.netty.dispatcher.numThreads 配置的网络分发处理的核数。默认是在 2 ,配置的核数,driver 或executor 配置的核数取最大值且配置的核数优先。
spark.rpc.message.maxSize 默认128 单位MB,配置的最大值为Int.MaxValue / 1024 / 1024
这个配置项是指:rpc message 的 max size

spark.rpc.askTimeout 默认 120S rpc通信超时时间

yarn lib中的jar和用户自己的高版本jar 处理加载 先后顺序(spark程序jar与spark lib jar冲突,加载顺序)

用户编写的spark程序打包成jar后提交到yarn执行时,经常会遇到jar包中明显存在某个类,但任务提交到yarn运行时却找不到类或方法(java.lang.NoSuchMethodError)的问题。主要是应为 集群中已经存在了这个jar,那么运行的时候首先会加载 集群的这个jar。
可以通过配置
spark.executor.userClassPathFirst = true
spark.driver.userClassPathFirst = true
先加载用户的依赖 jar。

广播

spark.broadcast.compress 默认为true,这个选项是 广播变量是否压缩
spark.broadcast.checksum 默认是true,这个选项是 计算校验和的
spark.broadcast.blockSize 默认4m,这个选项是设置广播的blockSize大小的
spark.shuffle.mapOutput.minSizeForBroadcast map端的数据输出,是否通过 广播方式传递的阀值 默认 512K
spark.shuffle.reduceLocality.enabled 是否支持 reducer 数据本地化 默认 true
spark.shuffle.mapOutput.dispatcher.numThreads map端 dispatcher 的线程数 默认8

内存划分

首先yarn启动jvm 有300M的保留内存,3001.5=450M的最小配置内存,即dirver-memory和executor-memory >= 450M
spark.memory.fraction Spark 配置的内存去处保留内存300M之后的 内存划分比例,默认0.6。
即 可用内存
0.6 作为 Spark Memory,可用内存*0.4 作为 User memory。

spark.memory.storageFraction 在Spark Memory中配置 Storage Memory和Execution Memory。默认0.5 。

spark.memory.offHeap.size 默认 是0,分配 Storage Memory和Execution Memory在堆外的 总内存大小;再配合spark.memory.storageFraction 的比例 划分到 Storage Memory、Execution Memory在堆外的内存大小。

spark.buffer.pageSize 内存页大小 必须是2的幂数。

spark.executor.memory=–executor-memory 即spark executor 的内存大小,但是这个并不是
这个 executor所在的yarn container 的申请的大小;
这个executor所在的yarn container 的申请的大小 executorMem = executorMemory + executorMemoryOverhead。
executorMemory就是spark.executor.memory=–executor-memory
executorMemoryOverhead 就是 如果配置了spark.executor.memoryOverhead的话,就是spark.executor.memoryOverhead,否则就是 max(MEMORY_OVERHEAD_FACTOR=0.10*executorMemory, MEMORY_OVERHEAD_MIN = 384L)

shuffle

spark.shuffle.accurateBlockThreshold 默认值 100 * 1024 * 1024 100M 这个阈值表示的是shuffle时采用的是区分Block的 种类,Block根据大小一共3种类型, empty,smallBlock,hugeBlock,这个阈值是smallBlock,hugeBlock的界限。

ClassLoader

spark.repl.class.uri 默认值 null spark org.apache.spark.repl.ExecutorClassLoader 的路径

BlockMananger

spark.storage.replication.proactive 默认值是false 主要在BlockManagerMasterEndpoint 中的 removeBlockManager(blockManagerId: BlockManagerId) 中启作用 true的话 可以主动的增加这个且只能是RDDBlockId 的副本

你可能感兴趣的:(Spark,源码,spark)