spark参数配置调优

SPARK配置参数的两个地方:

1. $SPARK_HOME/conf/spark-env.sh  脚本上配置。 配置格式如下:

export SPARK_DAEMON_MEMORY=1024m

2. 编程的方式(程序中在创建SparkContext之前,使用System.setProperty(“xx”,“xxx”)语句设置相应系统属性值),即在spark-shell下配置

如:scala> System.setProperty("spark.akka.frameSize","10240m")

 

一、环境变量spark-env.sh配置项

SCALA_HOME              #指向你的scala安装路径

MESOS_NATIVE_LIBRARY   #如果你要在Mesos上运行集群的话

SPARK_WORKER_MEMORY  #作业可使用的内存容量,默认格式1000M或者 2G (默认:  所有RAM去掉给操作系统用的1 GB);每个作业独立的内存空间由SPARK_MEM决定。

SPARK_JAVA_OPTS   #添加JVM选项。你可以通过-D来获取任何系统属性 eg: SPARK_JAVA_OPTS+="-Dspark.kryoserializer.buffer.mb=1024"

SPARK_MEM     #设置每个节点所能使用的内存总量。他们应该和JVM‘s -Xmx选项的格式保持一致(e.g.300m或1g)。注意:这个选项将很快被弃用支持系统属性spark.executor.memory,所以我们推荐将它使用在新代码中。

SPARK_DAEMON_MEMORY   #分配给Spark master和worker守护进程的内存空间(默认512M)

SPARK_DAEMON_JAVA_OPTS  #Spark master和worker守护进程的JVM选项(默认:none)

二、System Properties

Property Name Default Meaning
spark.executor.memory 512m Amount of memory to use per executor process, in the same format as JVM memory strings (e.g. `512m`, `2g`).
spark.akka.frameSize 10m Maximum message size to allow in "control plane" communication (for serialized tasks and task results), in MB. Increase this if your tasks need to send back large results to the driver (e.g. using collect() on a large dataset).
spark.default.parallelism 8 Default number of tasks to use for distributed shuffle operations (groupByKey, reduceByKey, etc) when not set by user.
     
     
     
     
     
     

  • spark.akka.frameSize: 控制Spark中通信消息的最大容量 (如 task 的输出结果),默认为10M。当处理大数据时,task 的输出可能会大于这个值,需要根据实际数据设置一个更高的值。如果是这个值不够大而产生的错误,可以从 worker的日志 中进行排查。通常 worker 上的任务失败后,master 的运行日志上出现”Lost TID: “的提示,可通过查看失败的 worker 的日志文件($SPARK_HOME/worker/下面的log文件) 中记录的任务的 Serialized size of result 是否超过10M来确定。
  • spark.default.parallelism: 控制Spark中的分布式shuffle过程默认使用的task数量,默认为8个。如果不做调整,数据量大时,就容易运行时间很长,甚至是出Exception,因为8个task无法handle那么多的数据。 注意这个值也不是说设置得越大越好。
  • spark.local.dir:Spark 运行时的临时目录,例如 map 的输出文件,保存在磁盘的 RDD 等都保存在这里。默认是 /tmp 这个目录,而一开始我们搭建的小集群上 /tmp 这个目录的空间只有2G,大数据量跑起来就出 Exception (”No space left on device”)了。

     

    参考:

    http://rdc.taobao.org/?p=533

    http://spark.incubator.apache.org/docs/0.7.3/configuration.html

    https://github.com/amplab/shark/blob/master/conf/shark-env.sh.template

    http://www.cnblogs.com/vincent-hv/p/3316502.html

    http://www.07net01.com/linux/Sparkdulibushumoshi_545676_1374481945.html

    https://groups.google.com/forum/#!searchin/spark-users/java.lang.OutOfMemoryError$3A$20GC$20overhead$20limit

  • 你可能感兴趣的:(spark参数配置调优)