各位看到的大侠们,,,,如果有什么问题,不要拍砖,后期进行完善。谢谢协助完善。
几个比较重要的配置属性:
1.手动启动集群
参数 |
含义 |
-i IP,--ip IP |
要监听的IP地址或者 DNS 机器名 |
-p PORT,--port PORT |
要监听的端口 (默认: master 7077 ;worker随机) |
--webui-port PORT |
web UI端口 (默认: master 8080, worker 8081) |
-c CORES,--cores CORES |
作业可用的CPU内核数量(默认: 所有可用);只在worker上 |
-m MEM,--memory MEM |
作业可使用的内存容量,默认格式1000M或者 2G (默认: 所有RAM去掉给操作系统用的1 GB); 只在worker上。 |
-d DIR,--work-dir DIR |
伸缩空间和日志输入的目录路径 (默认: SPARK_HOME/work); 只在worker上 |
2.集群启动脚本
环境变量 |
含义 |
SPARK_MASTER_IP |
绑定一个外部IP给master. |
SPARK_MASTER_PORT |
从另外一个端口启动master(默认: 7077) |
SPARK_MASTER_WEBUI_PORT |
Master的web UI端口 (默认: 8080) |
SPARK_WORKER_PORT |
启动Spark worker 的专用端口(默认:随机) |
SPARK_WORKER_DIR |
伸缩空间和日志输入的目录路径(默认: SPARK_HOME/work); |
SPARK_WORKER_CORES |
作业可用的CPU内核数量(默认: 所有可用的); |
SPARK_WORKER_MEMORY |
作业可使用的内存容量,默认格式1000M或者 2G (默认: 所有RAM去掉给操作系统用的1 GB);注意:每个作业自己的内存空间由SPARK_MEM决定。 |
SPARK_WORKER_WEBUI_PORT |
worker 的web UI 启动端口(默认: 8081) |
SPARK_WORKER_INSTANCES |
没太机器上运行worker数量 (默认: 1). 当你有一个非常强大的计算机的时候和需要多个Spark worker进程的时候你可以修改这个默认值大于1 . 如果你设置了这个值。要确保SPARK_WORKER_CORE 明确限制每一个r worker的核心数, 否则每个worker 将尝试使用所有的核心 |
SPARK_DAEMON_MEMORY |
分配给Spark master和 worker 守护进程的内存空间 (默认: 512m) |
SPARK_DAEMON_JAVA_OPTS |
Spark master 和 worker守护进程的JVM 选项(默认: none) |
//定期清理内存资源,这个值不能太小,如果后面的计算需要用到的数据被清除,会带来其他问题。同时,也是为了防止内存溢出.主要出现在streaming模块中。
spark.cleaner.ttl=
spark.home=
//不进行序列化
@transient
//由Spark自行管理持久化RDD,Spark自行判断哪些RDD是不常持有的,然后去序列化他们,可以减GC的次数,而且降低Spark对内存的使用,
spark.streaming.unpersist=true
//如果该参数没有配置,则默认实例化org.apache.spark.serializer.JavaSerializer对象。Spark Task 序列化配置。
spark.closure.serializer=
org.apache.spark.serializer.JavaSerializer
//In Spark 1.0 and later spark.local.dir will be overridden by the value set by the cluster manager (via SPARK_LOCAL_DIRS in mesos/standalone and LOCAL_DIRS in YARN. Spark 用于写中间数据的目录,其中包括:RDD Cache,Shufflte,Split,可以配置多个目录,中间用逗号分隔。
spark.local.dir=
//默认为""
spark.kryo.classesToRegister
//默认为:KryoSerializer
//org.apache.spark.serializer.JavaSerializer
spark.serializer=
// Distribution-defined classpath to add to processes
SPARK_DIST_CLASSPATH=
//This is deprecated in Spark 1.4+
// Please use spark {spark.reducer.maxMbInFlight} instead.
//
这个参数用于限制一个ReducerTask向其他的Executor请求Shuffle数据时所占用的最大内存数,尤其是如果网卡是千兆和千兆以下的网卡时。
spark.reducer.maxSizeInFlight=
//默认值为:host值。
SPARK_PUBLIC_DNS=
//SPARK_JAVA_OPTS was detected。
//This is deprecated in Spark 1.0+.
//Please instead use:
// - ./spark-submit with conf/spark-defaults.conf to set defaults for an application
// - ./spark-submit with --driver-java-options to set -X options for a driver
// - spark.executor.extraJavaOptions to set -X options for executors
// - SPARK_DAEMON_JAVA_OPTS to set java options for standalone daemons (master or worker)
SPARK_JAVA_OPTS=
//SPARK_CLASSPATH was detected。
//This is deprecated in Spark 1.0+.
//Please instead use:
// - ./spark-submit with --driver-class-path to augment the driver classpath
// - spark.executor.extraClassPath to augment the executor classpath
SPARK_CLASSPATH=
// Whether to compress RDD partitions that are stored serialized
spark.rdd.compress=false
// Validate memory fractions
spark.storage.memoryFraction
spark.shuffle.memoryFraction
spark.shuffle.safetyFraction
spark.storage.unrollFraction
spark.storage.safetyFraction
//shuffle过程中,内存中数据的阀值
spark.shuffle.memoryFraction=
作为一个保险系数降低实际Shuffle过程所需要的内存值
//作为一个保险系数,降低实际shuffle过程中需要的内存值
spark.shuffle.safetyFraction=
//默认值为:null
spark.metrics.conf
//单位为秒
spark.storage.cachedPeersTtl=60s
//subDirsPerTachyonDir
spark.externalBlockStore.subDirectories=64
//
spark.streaming.stopGracefullyOnShutdown=false
//////////////////////////////////////////////////////////////////////////////////////////////
// Broadcast 广播
//////////////////////////////////////////////////////////////////////////////////////////////
//Spark 广播实现类配置,默认为TorrentBroadcastFactory,还有一个选项为HttpBroadcastFactory。broadcast不会内存溢出,但会影响运行效率。
spark.broadcast.factory=org.apache.spark.broadcast.TorrentBroadcastFactory
//默认值为4M .
//数据库大小.blockifyObject 依据这个值来划分数据块大小
spark.broadcast.blockSize=4m
//
是否要压缩序列化的RDD分区(比如,
StorageLevel.MEMORY_ONLY_SER
)。在消耗一点额外的CPU时间的代价下,可以极大的提高减少空间的使用。
spark.broadcast.compress=true
//////////////////////////////////////////////////////////////////////////////////////////////
// Driver
//////////////////////////////////////////////////////////////////////////////////////////////
//driver主机地址端口
spark.driver.port
//driver主机地址
spark.driver.host
//Whether to consider jars provided by the user to have precedence over the Spark jars when loading user classes.
spark.driver.userClassPathFirst=
//
spark.driver.extraJavaOptions=
//
spark.driver.extraClassPath
//
spark.driver.extraLibraryPath
//从Spark1.2开始,该配置被 extraLibraryPath代替。
spark.driver.libraryPath=
//////////////////////////////////////////////////////////////////////////////////////////////
// Shuffle
//////////////////////////////////////////////////////////////////////////////////////////////
//默认为sort方式。
//shuffle方式对照的类:
// hash -> org.apache.spark.shuffle.hash.HashShuffleManager
// sort -> org.apache.spark.shuffle.sort.SortShuffleManager
// tungsten-sort -> org.apache.spark.shuffle.unsafe.UnsafeShuffleManager
spark.shuffle.manager=sort
//默认值为:netty
//shuffle的时候数据库的传输方式配置
//现在内部支持两种,NIO 和 Netty.
spark.shuffle.blockTransferService=netty
//是否压缩存储shuffle的输出数据
spark.shuffle.compress=true
//
是否启用shuffle输出临时文件溢出到磁盘。如果为false,会有内存溢出的风险
// Whether to compress shuffle output temporarily spilled to disk
spark.shuffle.spill.compress=true
//
spark.shuffle.service.enabled=false
//该配置上为了解决,shuffle过程中,文件过多的问题。具体是否需要启用,请根据测试后,再使用。
spark.shuffle.consolidateFiles=false
//
spark.shuffle.service.port=7337
//
spark.shuffle.sync=true
//This is deprecated in Spark 1.4+
// Please use spark {spark.shuffle.file.buffer.kb} instead.
//
spark.shuffle.file.buffer=
//////////////////////////////////////////////////////////////////////////////////////////////
// Scheduler
//////////////////////////////////////////////////////////////////////////////////////////////
//
spark.scheduler.mode=
// Submit tasks after maxRegisteredWaitingTime milliseconds
// if minRegisteredRatio has not yet been reached
spark.scheduler.maxRegisteredResourcesWaitingTime=30
// Submit tasks only after (registered resources / total expected resources)
// is equal to at least this value, that is double between 0 and 1.
spark.scheduler.minRegisteredResourcesRatio=0
// Periodically revive offers to allow delay scheduling to work,单位为妙,默认为1s.
spark.scheduler.revive.interval=1s
//////////////////////////////////////////////////////////////////////////////////////////////
// Executor
//////////////////////////////////////////////////////////////////////////////////////////////
//spark.executor.extraJavaOptions is not allowed to set Spark options。Set them directly on a SparkConf or in a properties file when using ./bin/spark-submit.
spark.executor.extraJavaOptions
//
spark.executor.extraClassPath
//spark.executor.extraJavaOptions is not allowed to alter memory settings。Use spark.executor.memory instead.
spark.executor.memory
//Whether to consider jars provided by the user to have precedence over the Spark jars when loading user classes.
spark.executor.userClassPathFirst=
//This is deprecated in Spark 1.3+
//Please use spark {spark.files.userClassPathFirst} instead.
spark.executor.userClassPathFirst
//This is deprecated in Spark 1.4+
// Please use spark {spark.executor.logs.rolling.size.maxBytes} instead.
//
spark.executor.logs.rolling.maxSize
//
spark.executor.port=0
//////////////////////////////////////////////////////////////////////////////////////////////
// History
//////////////////////////////////////////////////////////////////////////////////////////////
//This is deprecated in Spark 1.3+
//
// spark.history.fs.update.interval.seconds 1.4
// spark.history.fs.updateInterval 1.3
// spark.history.updateInterval 1.3
//此历史服务器显示的信息更新时间段。每一个更新检查在持久存储中的事件日志中所做的任何更改。
spark.history.fs.update.interval=10s
//This is deprecated in Spark 1.4+
// Please use spark {spark.history.fs.cleaner.interval.seconds} instead.
//
多少次对文件进行清理,才会删除文件。
仅删除
文件都比spark.history.fs.cleaner.maxage大的Age.
spark.history.fs.cleaner.interval=1d
//This is deprecated in Spark 1.4+
// Please use spark {spark.history.fs.cleaner.maxAge.seconds} instead.
//当历史清洁任务运行时,作业历史文件会被删除。
spark.history.fs.cleaner.maxAge=
//指定历史服务器是否应该定期清理事件日志。
spark.history.fs.cleaner.enabled=false
//历史服务器的网络端口
spark.history.ui.port=18080
//包含应用程序事件日志将载入历史服务器的目录,默认为:file:/tmp/spark-events
spark.history.fs.logDirectory=file:/tmp/spark-events
//////////////////////////////////////////////////////////////////////////////////////////////
// Master
//////////////////////////////////////////////////////////////////////////////////////////////
//Master地址,默认为localhost
SPARK_MASTER_HOST
//Master交互端口。默认为:7077
SPARK_MASTER_PORT=7077
//Master Web UI 端口号。默认端口号为:8080
SPARK_MASTER_WEBUI_PORT=8080
//////////////////////////////////////////////////////////////////////////////////////////////
// deploy
//////////////////////////////////////////////////////////////////////////////////////////////
//默认值为:true; 它的用途是在standalone 模式下,节点的自由选择,这样可以更好的进行数据本地性操作。如果配置为false, 对于计算机中心的工作比较有效。
spark.deploy.spreadOut=true
//默认使用的core 数量为机器所有的core.core数量必须大于1.
spark.deploy.defaultCores 或 spark.cores.max
//恢复模式默认为:NONE
//Spark 1.4版本中提供了3种方式:
// ZOOKEEPER:org.apache.spark.deploy.master.ZooKeeperRecoveryModeFactory
// FILESYSTEM:org.apache.spark.deploy.master.FileSystemRecoveryModeFactory
// CUSTOMER:通过指定该值{spark.deploy.recoveryMode.factory}来反射实例化对象。
// 默认为None方式
spark.deploy.recoveryMode=None
//默认值为:200
// 最多的应用程序来显示。旧的应用程序将从用户界面中删除,以保持这个限制。默认显示200个。
spark.deploy.retainedApplications=200
//默认值为:200;Master节点中,保存最多的Driver记录
spark.deploy.retainedDrivers=200
//////////////////////////////////////////////////////////////////////////////////////////////
// io
//////////////////////////////////////////////////////////////////////////////////////////////
//This is deprecated in Spark 1.4+
// Please use spark {spark.io.compression.snappy.block.size} instead.
//
spark.io.compression.snappy.blockSize
//This is deprecated in Spark 1.4+
// Please use spark {spark.io.compression.lz4.block.size} instead.
//
spark.io.compression.lz4.blockSize
//////////////////////////////////////////////////////////////////////////////////////////////
// rpc
//////////////////////////////////////////////////////////////////////////////////////////////
//This is deprecated in Spark 1.4+
// Please use spark {spark.akka.num.retries} instead.
//
spark.rpc.numRetries
//This is deprecated in Spark 1.4+
// Please use spark {spark.akka.askTimeout} instead.
//
spark.rpc.askTimeout
//This is deprecated in Spark 1.4+
// Please use spark {spark.akka.lookupTimeout} instead.
//
spark.rpc.lookupTimeout
//////////////////////////////////////////////////////////////////////////////////////////////
// kryoserializer
//////////////////////////////////////////////////////////////////////////////////////////////
//This is deprecated in Spark 1.4+
// Please use spark {spark.kryoserializer.buffer.mb} instead.
//
spark.kryoserializer.buffer
//This is deprecated in Spark 1.4+
// Please use spark {spark.kryoserializer.buffer.max.mb} instead.
//
spark.kryoserializer.buffer.max
//1.4
//Please use spark.kryoserializer.buffer instead. The default value for
//spark.kryoserializer.buffer.mb was previously specified as '0.064'. Fractional values
//are no longer accepted. To specify the equivalent now, one may use '64k'.
spark.kryoserializer.buffer.mb=
//////////////////////////////////////////////////////////////////////////////////////////////
// Worker
//////////////////////////////////////////////////////////////////////////////////////////////
//发送心跳,单位为:秒
//Send a heartbeat every (heartbeat timeout) / 4 milliseconds
spark.worker.timeout
//默认值:true
spark.worker.cleanup.enabled
//How often worker will clean up old app folders.
//默认值:60 * 30
spark.worker.cleanup.interval
//TTL for app folders/data; after TTL expires it will be cleaned up.
//默认时间间隔为:7 * 24 * 3600
spark.worker.cleanup.appDataTtl
//指定Worker端口,默认为:0
SPARK_WORKER_PORT=
//Worker节点运行使用的core数量.默认值为本机所有可用的core数量。
SPARK_WORKER_CORES=
//Worker内存大小设置,在指定的时候,需要带上单位(eg. 200M,1G)。
//默认值,首先是通过java.vendor来判断了一个是否是IBM,然后转换为 M.正常获取的值为总可用内存大小 - 1024.否则为1024M。
//如果内存大小小于1GB或者无法获得该Worker主机内存大小,默认为512M。
SPARK_WORKER_MEMORY=512
//Worker节点的WebUI 端口号。默认端口号为:8081
SPARK_WORKER_WEBUI_PORT=8081
//Worker交互超时时间,默认为60 × 1000 s
spark.worker.timeout=60
//默认值为:15
spark.dead.worker.persistence=15
//////////////////////////////////////////////////////////////////////////////////////////////
// Yarn
//////////////////////////////////////////////////////////////////////////////////////////////
//默认值为:true
spark.yarn.submit.waitAppCompletion=true
//
spark.yarn.maxAppAttempts=
//默认值为true
SPARK_YARN_MODE=true
// Location of any user-defined Spark jars
spark.yarn.jar=
// Internal config to propagate the location of the user's jar to the driver/executors
spark.yarn.user.jar=
// Internal config to propagate the locations of any extra jars to add to the classpath of the executors
spark.yarn.secondary.jars=
//This is deprecated in Spark 1.4+
// Please use spark {spark.yarn.am.waitTime} instead.
//
spark.yarn.applicationMaster.waitTries
//link presented in the distributed cache to the destination
spark.yarn.keytab
//
spark.yarn.user.classpath.first=false
//Cleanup application staging directory.
spark.yarn.preserve.staging.files=false
//默认为24×60分钟。单位为分钟
spark.yarn.token.renewal.interval=24 * 60
//
spark.yarn.credentials.file=
//1.3
//Please use spark.{driver,executor}.userClassPathFirst instead.
spark.yarn.user.classpath.first=
//////////////////////////////////////////////////////////////////////////////////////////////
// Streaming
//////////////////////////////////////////////////////////////////////////////////////////////
//默认值为true,表示使用ReliableKafkaReceiver 来接受消息,其中会使用WAL机制,来保证数据的可靠,也保证数据不丢失
spark.streaming.receiver.writeAheadLog.enable=true